📄 mail.h
字号:
#define SA_UNSEEN (long) 4 /* number of unseen messages */#define SA_UIDNEXT (long) 8 /* next UID to be assigned */#define SA_UIDVALIDITY (long) 16/* UID validity value *//* Mailgets flags */#define MG_UID (long) 1 /* message number is a UID */#define MG_COPY (long) 2 /* must return copy of argument *//* SASL authenticator categories */#define AU_SECURE (long) 1 /* /secure allowed */#define AU_AUTHUSER (long) 2 /* /authuser=xxx allowed *//* Garbage collection flags */#define GC_ELT (long) 1 /* message cache elements */#define GC_ENV (long) 2 /* envelopes and bodies */#define GC_TEXTS (long) 4 /* cached texts *//* Bits for mm_list() and mm_lsub() */#define LATT_NOINFERIORS (long) 1#define LATT_NOSELECT (long) 2#define LATT_MARKED (long) 4#define LATT_UNMARKED (long) 8#define LATT_REFERRAL (long) 16/* Sort functions */#define SORTDATE 0 /* date */#define SORTARRIVAL 1 /* arrival date */#define SORTFROM 2 /* from */#define SORTSUBJECT 3 /* subject */#define SORTTO 4 /* to */#define SORTCC 5 /* cc */#define SORTSIZE 6 /* size *//* imapreferral_t codes */#define REFAUTHFAILED (long) 0 /* authentication referral -- not logged in */#define REFAUTH (long) 1 /* authentication referral -- logged in */#define REFSELECT (long) 2 /* select referral */#define REFCREATE (long) 3#define REFDELETE (long) 4#define REFRENAME (long) 5#define REFSUBSCRIBE (long) 6#define REFUNSUBSCRIBE (long) 7#define REFSTATUS (long) 8#define REFCOPY (long) 9#define REFAPPEND (long) 10/* Block notification codes */#define BLOCK_NONE 0 /* not blocked */#define BLOCK_SENSITIVE 1 /* sensitive code, disallow alarms */#define BLOCK_NONSENSITIVE 2 /* non-sensitive code, allow alarms */#define BLOCK_DNSLOOKUP 10 /* blocked on DNS lookup */#define BLOCK_TCPOPEN 11 /* blocked on TCP open */#define BLOCK_TCPREAD 12 /* blocked on TCP read */#define BLOCK_TCPWRITE 13 /* blocked on TCP write */#define BLOCK_TCPCLOSE 14 /* blocked on TCP close */#define BLOCK_FILELOCK 20 /* blocked on file locking *//* In-memory sized-text */#define SIZEDTEXT struct mail_sizedtextSIZEDTEXT { unsigned char *data; /* text */ unsigned long size; /* size of text in octets */};/* String list */#define STRINGLIST struct string_listSTRINGLIST { SIZEDTEXT text; /* string text */ STRINGLIST *next;};/* Parse results from mail_valid_net_parse */#define NETMAXHOST 65#define NETMAXUSER 65#define NETMAXMBX (MAILTMPLEN/4)#define NETMAXSRV 21typedef struct net_mailbox { char host[NETMAXHOST]; /* host name (may be canonicalized) */ char orighost[NETMAXHOST]; /* host name before canonicalization */ char user[NETMAXUSER]; /* user name */ char authuser[NETMAXUSER]; /* authentication user name */ char mailbox[NETMAXMBX]; /* mailbox name */ char service[NETMAXSRV]; /* service name */ unsigned long port; /* TCP port number */ unsigned int anoflag : 1; /* anonymous */ unsigned int dbgflag : 1; /* debug flag */ unsigned int secflag : 1; /* secure flag */ unsigned int altflag : 1; /* alt driver flag */ unsigned int tryaltflag : 1; /* (internal) try alt driver first flag */ unsigned int altopt : 1; /* alt option flag */} NETMBX;/* Item in an address list */#define ADDRESS struct mail_addressADDRESS { char *personal; /* personal name phrase */ char *adl; /* at-domain-list source route */ char *mailbox; /* mailbox name */ char *host; /* domain name of mailbox's host */ char *error; /* error in address from SMTP module */ ADDRESS *next; /* pointer to next address in list */};/* Message envelope */typedef struct mail_envelope { unsigned int ngbogus : 1; /* newsgroups may be bogus */ unsigned int incomplete : 1; /* envelope may be incomplete */ char *remail; /* remail header if any */ ADDRESS *return_path; /* error return address */ char *date; /* message composition date string */ ADDRESS *from; /* originator address list */ ADDRESS *sender; /* sender address list */ ADDRESS *reply_to; /* reply address list */ char *subject; /* message subject string */ ADDRESS *to; /* primary recipient list */ ADDRESS *cc; /* secondary recipient list */ ADDRESS *bcc; /* blind secondary recipient list */ char *in_reply_to; /* replied message ID */ char *message_id; /* message ID */ char *newsgroups; /* USENET newsgroups */ char *followup_to; /* USENET reply newsgroups */ char *references; /* USENET references */ void *sparep; /* spare pointer reserved for main program */} ENVELOPE;/* Primary body types *//* If you change any of these you must also change body_types in rfc822.c */#define TYPETEXT 0 /* unformatted text */#define TYPEMULTIPART 1 /* multiple part */#define TYPEMESSAGE 2 /* encapsulated message */#define TYPEAPPLICATION 3 /* application data */#define TYPEAUDIO 4 /* audio */#define TYPEIMAGE 5 /* static image */#define TYPEVIDEO 6 /* video */#define TYPEMODEL 7 /* model */#define TYPEOTHER 8 /* unknown */#define TYPEMAX 15 /* maximum type code *//* Body encodings *//* If you change any of these you must also change body_encodings in rfc822.c */#define ENC7BIT 0 /* 7 bit SMTP semantic data */#define ENC8BIT 1 /* 8 bit SMTP semantic data */#define ENCBINARY 2 /* 8 bit binary data */#define ENCBASE64 3 /* base-64 encoded data */#define ENCQUOTEDPRINTABLE 4 /* human-readable 8-as-7 bit data */#define ENCOTHER 5 /* unknown */#define ENCMAX 10 /* maximum encoding code *//* Body contents */#define BODY struct mail_bodystruct#define MESSAGE struct mail_body_message#define PARAMETER struct mail_body_parameter#define PART struct mail_body_part#define PARTTEXT struct mail_body_text/* Message body text */PARTTEXT { unsigned long offset; /* offset from body origin */ SIZEDTEXT text; /* text */};/* Message body structure */BODY { unsigned short type; /* body primary type */ unsigned short encoding; /* body transfer encoding */ char *subtype; /* subtype string */ PARAMETER *parameter; /* parameter list */ char *id; /* body identifier */ char *description; /* body description */ struct { /* body disposition */ char *type; /* disposition type */ PARAMETER *parameter; /* disposition parameters */ } disposition; STRINGLIST *language; /* body language */ PARTTEXT mime; /* MIME header */ PARTTEXT contents; /* body part contents */ union { /* different ways of accessing contents */ PART *part; /* body part list */ MESSAGE *msg; /* body encapsulated message */ } nested; struct { unsigned long lines; /* size of text in lines */ unsigned long bytes; /* size of text in octets */ } size; char *md5; /* MD5 checksum */};/* Parameter list */PARAMETER { char *attribute; /* parameter attribute name */ char *value; /* parameter value */ PARAMETER *next; /* next parameter in list */};/* Multipart content list */PART { BODY body; /* body information for this part */ PART *next; /* next body part */};/* RFC-822 Message */MESSAGE { ENVELOPE *env; /* message envelope */ BODY *body; /* message body */ PARTTEXT full; /* full message */ STRINGLIST *lines; /* lines used to filter header */ PARTTEXT header; /* header text */ PARTTEXT text; /* body text */};/* Entry in the message cache array */typedef struct message_cache { unsigned long msgno; /* message number */ unsigned int lockcount : 8; /* non-zero if multiple references */ unsigned long rfc822_size; /* # of bytes of message as raw RFC822 */ struct { /* c-client internal use only */ unsigned long uid; /* message unique ID */ PARTTEXT special; /* special text pointers */ MESSAGE msg; /* internal message pointers */ unsigned int sequence : 1; /* saved sequence bit */ unsigned int dirty : 1; /* driver internal use */ unsigned long data; /* driver internal use */ } private; /* internal date */ unsigned int day : 5; /* day of month (1-31) */ unsigned int month : 4; /* month of year (1-12) */ unsigned int year : 7; /* year since BASEYEAR (expires in 127 yrs) */ unsigned int hours: 5; /* hours (0-23) */ unsigned int minutes: 6; /* minutes (0-59) */ unsigned int seconds: 6; /* seconds (0-59) */ unsigned int zoccident : 1; /* non-zero if west of UTC */ unsigned int zhours : 4; /* hours from UTC (0-12) */ unsigned int zminutes: 6; /* minutes (0-59) */ /* system flags */ unsigned int seen : 1; /* system Seen flag */ unsigned int deleted : 1; /* system Deleted flag */ unsigned int flagged : 1; /* system Flagged flag */ unsigned int answered : 1; /* system Answered flag */ unsigned int draft : 1; /* system Draft flag */ unsigned int recent : 1; /* system Recent flag */ /* message status */ unsigned int valid : 1; /* elt has valid flags */ unsigned int searched : 1; /* message was searched */ unsigned int sequence : 1; /* message is in sequence */ /* reserved for use by main program */ unsigned int spare : 1; /* first spare bit */ unsigned int spare2 : 1; /* second spare bit */ unsigned int spare3 : 1; /* third spare bit */ void *sparep; /* spare pointer */ unsigned long user_flags; /* user-assignable flags */} MESSAGECACHE;/* String structure */#define STRINGDRIVER struct string_drivertypedef struct mailstring { void *data; /* driver-dependent data */ unsigned long data1; /* driver-dependent data */ unsigned long size; /* total length of string */ char *chunk; /* base address of chunk */ unsigned long chunksize; /* size of chunk */ unsigned long offset; /* offset of this chunk in base */ char *curpos; /* current position in chunk */ unsigned long cursize; /* number of bytes remaining in chunk */ STRINGDRIVER *dtb; /* driver that handles this type of string */} STRING;/* Dispatch table for string driver */STRINGDRIVER { /* initialize string driver */ void (*init) (STRING *s,void *data,unsigned long size); /* get next character in string */ char (*next) (STRING *s); /* set position in string */ void (*setpos) (STRING *s,unsigned long i);};/* Stringstruct access routines */#define INIT(s,d,data,size) ((*((s)->dtb = &d)->init) (s,data,size))#define SIZE(s) ((s)->size - GETPOS (s))#define CHR(s) (*(s)->curpos)#define SNX(s) (--(s)->cursize ? *(s)->curpos++ : (*(s)->dtb->next) (s))#define GETPOS(s) ((s)->offset + ((s)->curpos - (s)->chunk))#define SETPOS(s,i) (*(s)->dtb->setpos) (s,i)/* Search program */#define SEARCHPGM struct search_program#define SEARCHHEADER struct search_header#define SEARCHSET struct search_set#define SEARCHOR struct search_or#define SEARCHPGMLIST struct search_pgm_listSEARCHHEADER { /* header search */ SIZEDTEXT line; /* header line */ SIZEDTEXT text; /* text in header */ SEARCHHEADER *next; /* next in list */};SEARCHSET { /* message set */ unsigned long first; /* sequence number */ unsigned long last; /* last value, if a range */ SEARCHSET *next; /* next in list */};SEARCHOR { SEARCHPGM *first; /* first program */ SEARCHPGM *second; /* second program */ SEARCHOR *next; /* next in list */};SEARCHPGMLIST { SEARCHPGM *pgm; /* search program */ SEARCHPGMLIST *next; /* next in list */};SEARCHPGM { /* search program */ SEARCHSET *msgno; /* message numbers */ SEARCHSET *uid; /* unique identifiers */ SEARCHOR *search_or; /* or'ed in programs */ SEARCHPGMLIST *search_not; /* and'ed not program */ SEARCHHEADER *header; /* list of headers */ STRINGLIST *bcc; /* bcc recipients */ STRINGLIST *body; /* text in message body */ STRINGLIST *cc; /* cc recipients */ STRINGLIST *from; /* originator */ STRINGLIST *keyword; /* keywords */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -