Rewrote header.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32749 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
+105
-104
@@ -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 <UTF8.h>
|
||||
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user