diff --git a/headers/os/mail/E-mail.h b/headers/os/mail/E-mail.h index b0d9e0ad38..a3024c961a 100644 --- a/headers/os/mail/E-mail.h +++ b/headers/os/mail/E-mail.h @@ -1,79 +1,78 @@ -/******************************************************************************* -/ -/ File: E-mail.h -/ -/ Description: Mail attributes and BMailMessage class. -/ -/ Copyright 1993-98, Be Incorporated, All Rights Reserved. -/ -*******************************************************************************/ - +/* + * Copyright 2009, Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT License. + */ #ifndef _E_MAIL_H #define _E_MAIL_H + #include + class BList; struct entry_ref; -/* -----------------------------------------------------------------------*/ -/* 'E-Mail' attributes...*/ -#define B_MAIL_ATTR_NAME "MAIL:name" /* indexed string*/ -#define B_MAIL_ATTR_STATUS "MAIL:status" /* indexed string*/ -#define B_MAIL_ATTR_PRIORITY "MAIL:priority" /* indexed string*/ -#define B_MAIL_ATTR_TO "MAIL:to" /* indexed string*/ -#define B_MAIL_ATTR_CC "MAIL:cc" /* indexed string*/ -#define B_MAIL_ATTR_FROM "MAIL:from" /* indexed string*/ -#define B_MAIL_ATTR_SUBJECT "MAIL:subject" /* indexed string*/ -#define B_MAIL_ATTR_REPLY "MAIL:reply" /* indexed string*/ -#define B_MAIL_ATTR_WHEN "MAIL:when" /* indexed time*/ -#define B_MAIL_ATTR_FLAGS "MAIL:flags" /* indexed int32*/ -#define B_MAIL_ATTR_RECIPIENTS "MAIL:recipients" /* string*/ -#define B_MAIL_ATTR_MIME "MAIL:mime" /* string*/ -#define B_MAIL_ATTR_HEADER "MAIL:header_length" /* int32*/ -#define B_MAIL_ATTR_CONTENT "MAIL:content_length" /* int32*/ +// E-Mail attributes +#define B_MAIL_ATTR_NAME "MAIL:name" // indexed string +#define B_MAIL_ATTR_STATUS "MAIL:status" // indexed string +#define B_MAIL_ATTR_PRIORITY "MAIL:priority" // indexed string +#define B_MAIL_ATTR_TO "MAIL:to" // indexed string +#define B_MAIL_ATTR_CC "MAIL:cc" // indexed string +#define B_MAIL_ATTR_FROM "MAIL:from" // indexed string +#define B_MAIL_ATTR_SUBJECT "MAIL:subject" // indexed string +#define B_MAIL_ATTR_REPLY "MAIL:reply" // indexed string +#define B_MAIL_ATTR_WHEN "MAIL:when" // indexed time +#define B_MAIL_ATTR_FLAGS "MAIL:flags" // indexed int32 +#define B_MAIL_ATTR_RECIPIENTS "MAIL:recipients" // string +#define B_MAIL_ATTR_MIME "MAIL:mime" // string +#define B_MAIL_ATTR_HEADER "MAIL:header_length" // int32 +#define B_MAIL_ATTR_CONTENT "MAIL:content_length" // int32 -/* mail flags */ -enum mail_flags {B_MAIL_PENDING = 1, /* waiting to be sent*/ - B_MAIL_SENT = 2, /* has been sent*/ - B_MAIL_SAVE = 4}; /* save mail after sending*/ +// mail flags +enum mail_flags { + B_MAIL_PENDING = 1, // waiting to be sent -#define B_MAIL_TYPE "text/x-email" /* mime type*/ + B_MAIL_SENT = 2, // has been sent -/* Everything past this point is deprecated. See MailMessage.h, mail_encoding.h - and MailDaemon.h for alternatives. */ + B_MAIL_SAVE = 4 // save mail after + // sending +}; -/* DEPRECATED -- DEPRECATED -- DEPRECATED -- DEPRECATED -- DEPRECATED */ -/* DEPRECATED -- DEPRECATED -- DEPRECATED -- DEPRECATED -- DEPRECATED */ +#define B_MAIL_TYPE "text/x-email" // mime type -/* defines...*/ -/* schedule days */ +// WARNING: Everything past this point is deprecated. See MailMessage.h, +// mail_encoding.h and MailDaemon.h for alternatives. + + +// #pragma mark - defines + +// schedule days #define B_CHECK_NEVER 0 #define B_CHECK_WEEKDAYS 1 #define B_CHECK_DAILY 2 #define B_CHECK_CONTINUOUSLY 3 #define B_CHECK_CONTINUOSLY 3 -/* max. lengths */ +// max. lengths #define B_MAX_USER_NAME_LENGTH 32 #define B_MAX_HOST_NAME_LENGTH 64 -/* rfc822 header field types */ -#define B_MAIL_TO "To: " -#define B_MAIL_CC "Cc: " -#define B_MAIL_BCC "Bcc: " -#define B_MAIL_FROM "From: " -#define B_MAIL_DATE "Date: " -#define B_MAIL_REPLY "Reply-To: " -#define B_MAIL_SUBJECT "Subject: " -#define B_MAIL_PRIORITY "Priority: " +// rfc822 header field types +#define B_MAIL_TO "To: " +#define B_MAIL_CC "Cc: " +#define B_MAIL_BCC "Bcc: " +#define B_MAIL_FROM "From: " +#define B_MAIL_DATE "Date: " +#define B_MAIL_REPLY "Reply-To: " +#define B_MAIL_SUBJECT "Subject: " +#define B_MAIL_PRIORITY "Priority: " -/* -----------------------------------------------------------------------*/ -/* structs...*/ +// #pragma mark - structs + typedef struct { char pop_name[B_MAX_USER_NAME_LENGTH]; @@ -92,70 +91,72 @@ typedef struct { bool beep; } mail_notification; -/* -----------------------------------------------------------------------*/ -/* global functions...*/ -int32 count_pop_accounts(void); -status_t get_pop_account(mail_pop_account*, int32 index = 0); -status_t set_pop_account(mail_pop_account*, int32 index = 0, - bool save = true); -status_t get_smtp_host(char*); -status_t set_smtp_host(char*, bool save = true); -status_t get_mail_notification(mail_notification*); -status_t set_mail_notification(mail_notification*, bool save = true); - -status_t check_for_mail(int32 *incoming_count = NULL); -status_t send_queued_mail(void); -status_t forward_mail(entry_ref*, const char* recipients, bool now = true); - -ssize_t decode_base64(char *out, char *in, off_t length, - bool replace_cr = false); -ssize_t encode_base64(char *out, char *in, off_t length); +// #pragma mark - global functions -/* -----------------------------------------------------------------------*/ -/* class...*/ +int32 count_pop_accounts(void); +status_t get_pop_account(mail_pop_account*, int32 index = 0); +status_t set_pop_account(mail_pop_account*, int32 index = 0, + bool save = true); +status_t get_smtp_host(char*); +status_t set_smtp_host(char*, bool save = true); +status_t get_mail_notification(mail_notification*); +status_t set_mail_notification(mail_notification*, bool save = true); + +status_t check_for_mail(int32* incoming_count = NULL); +status_t send_queued_mail(void); +status_t forward_mail(entry_ref*, const char* recipients, bool now = true); + +ssize_t decode_base64(char* out, char* in, off_t length, + bool replace_cr = false); +ssize_t encode_base64(char* out, char* in, off_t length); + + +// #pragma mark - BMailMessage class BMailMessage { - public: - BMailMessage(void); - ~BMailMessage(void); + BMailMessage(); + ~BMailMessage(); - status_t AddContent(const char *text, int32 length, - uint32 encoding = B_ISO1_CONVERSION, - bool clobber = false); - status_t AddContent(const char *text, int32 length, - const char *encoding, bool clobber = false); - - status_t AddEnclosure(entry_ref *ref, bool clobber = false); - status_t AddEnclosure(const char *path, bool clobber = false); - status_t AddEnclosure(const char *MIME_type, void *data, int32 len, - bool clobber = false); - - status_t AddHeaderField(uint32 encoding, const char *field_name, const char *str, - bool clobber = false); - status_t AddHeaderField(const char *field_name, const char *str, - bool clobber = false); - - status_t Send(bool send_now = false, - bool remove_when_I_have_completed_sending_this_message_to_your_preferred_SMTP_server = false); - - -/* -----------------------------------------------------------------------*/ + status_t AddContent(const char* text, int32 length, + uint32 encoding = B_ISO1_CONVERSION, + bool clobber = false); + status_t AddContent(const char* text, int32 length, + const char* encoding, + bool clobber = false); + + status_t AddEnclosure(entry_ref* ref, + bool clobber = false); + status_t AddEnclosure(const char* path, + bool clobber = false); + status_t AddEnclosure(const char* MIME_type, void* data, + int32 len, bool clobber = false); + + status_t AddHeaderField(uint32 encoding, + const char* field_name, const char* str, + bool clobber = false); + status_t AddHeaderField(const char* field_name, + const char* str, bool clobber = false); + + status_t Send(bool sendNow = false, + bool removeAfterSending = false); private: - BList* fFields; - bool fMultiPart; + int32 concatinate(char**, int32, char*); + int32 count_fields(char* name = NULL); + status_t find_field(char*, type_code*, char**, void**, + int32*, uint32*, char**, bool*, int32); + BList* find_field(const char*); + status_t get_field_name(char**, int32); + status_t set_field(const char*, type_code, const char*, + const void*, int32, uint32, const char*, + bool); - int32 concatinate(char**, int32, char*); - int32 count_fields(char *name = NULL); - status_t find_field(char*, type_code*, char**, void**, int32*, - uint32*, char**, bool*, int32); - BList* find_field(const char*); - status_t get_field_name(char**, int32); - status_t set_field(const char*, type_code, const char*, const void*, - int32, uint32, const char*, bool); +private: + BList* fFields; + bool fMultiPart; }; -#endif /* _MAIL_H */ +#endif // _MAIL_H