📄 sendemail.h
字号:
#ifndef _SENDEMAIL_H_#define _SENDEMAIL_H_#include <string>#include <vector>#include <fstream>#include <list>#include <time.h>#include <ctype.h>#include <sys/types.h>#include <sys/socket.h>#include <netdb.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sstream> typedef std::ostringstream StrngStream;class SendEmail {public: enum {SMTP_OUTGOING_MAIL_PORT = 25, BASE64_MAXLINE = 76, MAX_LINE_SIZE = 4094}; enum LoginMethod{LOGIN_AUTH_METHOD, LOGIN_PLAIN_METHOD}; SendEmail( std::string EmailSenderHostName, std::string Auth_UserID, std::string Auth_Password = "", std::string Sender = "jara@mail.nnov.ru", std::string ReplyToAddr = "", LoginMethod LoginMethod_ = LOGIN_AUTH_METHOD, // LoginMethod LoginMethod_ = LOGIN_PLAIN_METHOD, std::string X_Mailer = "X-Mailer: test\r\n", std::string X_Phone = "", std::string EmailAddrSeperator = ", "); ~SendEmail(); std::string operator()( const std::string &To, const std::string &Subject, const std::string &Body, const std::list<std::string> *CC_List = 0, const std::list<std::string> *BCC_List = 0, const std::list<std::string> *AttachmentPath_List = 0, const std::string *MessageID = 0); std::string Mail( const std::list<std::string> &To, const std::string &Subject, const std::string &Body, const std::list<std::string> *CC_List = 0, const std::list<std::string> *BCC_List = 0, const std::list<std::string> *AttachmentPath_List = 0, const std::string *MessageID = 0); std::string Mail1( const std::string &To, const std::string &Subject, const std::string &Body, const std::list<std::string> *CC_List = 0, const std::list<std::string> *BCC_List = 0, const std::list<std::string> *AttachmentPath_List = 0, const std::string *MessageID = 0); void DoLogin(void); static const char* NO_ERRORS; const std::vector<std::string> &RecentErrorLog;private: std::list<std::string>* StrLstToELst(const std::list<std::string> *Src, std::list<std::string> &Dest); enum{TO_BLOCK, CC_BLOCK, BCC_BLOCK}; std::string Mail( const std::string &RCPT_To, const std::list<std::string> &To, const std::string &Subject, const std::string &Body, const std::list<std::string> &CC_List, const std::list<std::string> *AttachmentPath_List, const std::string &MessageID); std::vector<std::string> m_RecentErrorLog; LoginMethod m_LoginMethod; std::string m_EmailSenderHostName; std::string m_Sender; std::string m_ReplyToAddr; std::string m_Auth_UserID; std::string m_Auth_Password; std::string m_EmailAddrSeperator; int m_socket; bool m_InitiateGood; char m_EmailBuffer[MAX_LINE_SIZE + 1]; const std::string m_X_Mailer; const std::string m_X_Phone; int m_UniqueContentID; bool m_UseReplyToAddr_ForMailFrom; std::string ReturnValueFromReceive; static const char* m_base64Table; static const char* CHK_220_REPLY; static const char* CHK_221_REPLY; static const char* CHK_235_REPLY; static const char* CHK_250_REPLY; static const char* CHK_334_REPLY; static const char* CHK_354_REPLY; static const char* EMAIL_ADDR_DIV_CHR; static const std::string CRLF_SET; bool SendStr(const StrngStream &Src); bool SendStr(const char* Buffer); bool VerifyReply(const char* szReplyString); bool Receive(char* szBuffer, int nLenMax, int nFlags, const char* szReplyString); bool Send(const char *szBuffer, size_t nLen); bool Encode64File(const std::string &FileName); std::string Encode64String(const std::string &Src); char Encode64Byte(unsigned char uc); static std::string EmailAddrFormat(const std::string &Src); const char* Encode64(const std::vector<unsigned char> & vBytes, std::string *Dest = NULL, bool EndWithCR = false);};bool SendEmailSimple(const char* HostName, const char* UserID, const char* To, const char* Subject, const char* Body, const char* UserPassword = NULL, const char* FileName_Attach = NULL);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -