📄 smtpio.h
字号:
#ifndef __SMTPIO_H__
#define __SMTPIO_H__
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <time.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#include <fcntl.h>
#include <netdb.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/un.h>
#undef MIN
#undef MAX
#include "defines.h"
#include "parse.h"
#include "sockio.h"
#include "util.h"
#include "mime.h"
// version information for smtpio
#define VER_MAJOR '0'
#define VER_MINOR '1'
#define VER_REL '0'
// message status's
#define UNDELIVERED 1
#define DELIVERING 2
#define DELIVERED 3
// SMTP numerical responses for checking (some smtp servers may not
// say "250 <user@host.com> Recipient ok..." so we should check for the
// numbers that the SMTP server sends back to us instead.)
#define UnknownCmd "500"
#define SyntaxErr "501"
#define CmdNotImpl "502"
#define BadSeqComs "503"
#define SysStatRep "211"
#define HelpInfo "214"
#define ServiceRdy "220"
#define ServClose "221"
#define ServNotAvail "421"
#define AuthLoginCon "334"
#define AuthLoginOK "235"
#define ReqMlActOK "250"
#define UsrNotLocal "251"
#define MailboxBusy "450"
#define ReqNotTaken "550"
#define ReqAborted "451"
#define UsrNtLoclTry "551"
#define InsuffStorage "452"
#define ExcedStorAlloc "552"
#define MbxNmNotAlwd "553"
#define StrtMailInpt "354"
#define TransFailed "554"
// Error numbers.
typedef enum
{
S_NO_ERROR,
S_ERR_PREPARE_MAIL_SERVER,
S_ERR_RESOLVE,
S_ERR_SOCKET,
S_ERR_CONNECT,
S_ERR_SERV_ACK,
S_ERR_HELO_SEND,
S_ERR_HELO_RECV,
S_ERR_AUTH_LOGIN,
S_ERR_AUTH_USER,
S_ERR_AUTH_PASSWORD,
S_ERR_MAIL_SEND,
S_ERR_MAIL_RECV,
S_ERR_RCPT_SEND,
S_ERR_RCPT_RECV,
S_ERR_DATA_SEND,
S_ERR_DATA_RECV,
S_ERR_BODY_RECV,
S_ERR_RSET_SEND,
S_ERR_RSET_RECV,
S_ERR_QUIT_SEND,
S_ERR_QUIT_RECV,
S_ERR_INV_SENDR,
S_ERR_INV_RECIP
} SMTPError;
typedef union
{
char string[6];
struct
{
char major;
char delim1;
char minor;
char delim2;
char release;
char null;
} part;
} Version;
/*
typedef struct
{
char *to, *to_addr;
char *cc, *cc_addr;
char *from, *from_addr;
char *replyto;
char *header;
char *subject;
char *xmailer;
char *mime_version;
char *content_type;
char *content_transfer_encoding;
char *body;
unsigned int status:2;
} Email;
*/
typedef struct
{
char to_addr[80];
char cc_addr[80];
char from_addr[32];
char replyto[32];
char header[320];
char subject[64];
char xmailer[32];
char mime_version[32];
char content_type[64];
char content_transfer_encoding[64];
char body[1024];
unsigned int status:2;
} Email;
typedef struct _Mlist Mlist;
struct _Mlist
{
char *data;
Mlist *next;
};
char *smtpArror(void);
void email_destroy ( Email *msg);
int format_date (char *date, size_t date_size);
int format_header (Email *msg);
int get_email_addr_from_text (char *addr, char *email);
int eml_smtp_helo (int sock);
int eml_smtp_auth (int sock, char *username, char *password);
int eml_smtp_mail (int sock, const char *sender);
int eml_smtp_rcpt (int sock, char *recipient, char *orig_rcpt);
int eml_smtp_data (int sock, char *header, char *body);
int eml_smtp_rset (int sock);
int eml_smtp_quit (int sock);
int eml_smtp_open (Server *server);
int eml_smtp_close(int sock);
int eml_send_mail_needAuth(Server *server, Email *msg, char *username, char *password);
int eml_send_mail_noNeedAuth(Server *server, Email *msg);
int eml_prepare_mail(char *smtphost, int port, char *from,char *to,char *cc, char *subject, char *textbody, Mlist *mimefiles);
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -