mailpit 与MailHog 都一样是基于golang 开发的,但是mailpit 扩展了不少能力是一个很不错的选择

参考网址:

mailhog

mailpit

axllent

caniemail

Golang 发送邮件

** SMTP简单邮件传输协议(C/C++ 发送电子邮件)

SMTP的基本命令

HELO或EHLO(你好):这是开始整个电子邮件发送过程的关键命令。电子邮件客户端正在向SMTP服务器标识自己。这是一个对话的开始,通常涉及服务器发回一个HELO命令及其域名/IP地址。

MAIL FROM:根据标识命令,发件人将共享指定邮件发件人的代码。这会列出电子邮件地址,并告诉SMTP服务器新事务即将开始。从这里开始,服务器重置所有内容,并准备接受电子邮件地址。一旦被接受,它将回复一个250 OK的回复代码。

RCPT TO(Recipient TO):下一个命令位于250 OK回复代码之后,该代码用于识别电子邮件的发送对象。同样,SMTP服务器使用相同的代码进行响应,此时可以使用不同收件人的电子邮件地址发送另一个RCPT TO命令。这可以根据需要来回多次,具体取决于收到电子邮件的人数。

DATA 数据:这会触发客户端和服务器之间的数据传输。所有邮件内容都将移动到SMTP服务器,SMTP服务器将以345回复代码进行响应。消息的内容被传输到服务器,在服务器中,一个点被单独发送到一行中,以表示消息的结束。如果接受并准备好交付,服务器将发送另一个250 OK代码。此时,邮件正在发送给收件人的途中。

QUIT:发送电子邮件后,客户端向服务器发送QUIT命令,切断连接。如果已成功关闭,服务器将回复221代码。

RSET(Reset):当邮件事务需要中止时,会将此命令发送到服务器。它不会关闭连接,但会重置所有内容,并删除有关电子邮件和相关方的所有以前的数据。当出现错误时,通常会使用此方法,例如输入错误的收件人信息,并且需要重新启动流程。

原文链接:

SMTP 错误代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#define SMTP_SERV_NOSERVICE 421 /* Server error: <domain> Service not available, closing transmission channel */
#define SMTP_SERV_NOMAILBOX 450 /* Server error: Requested mail action not taken: mailbox unavailable */
#define SMTP_SERV_ACTABORT 451 /* Server error: Requested action aborted: local error in processing */
#define SMTP_SERV_NOSTORAGE 452 /* Server error: Requested action not taken: insufficient system storage */
#define SMTP_SERV_NOTLS 454 /* Server error: TLS not available */
#define SMTP_SERV_SYNTAX 500 /* Syntax error, command unrecognised */
#define SMTP_SERV_SYNTAX_P 501 /* Server error: Syntax error in parameters or arguments*/
#define SMTP_SERV_UNKNOWN 502 /* Server error: Unknown command */
#define SMTP_SERV_BADSEQ 503 /* Server error: Bad sequence of commands */
#define SMTP_SERV_NCMDPAR 504 /* Server error: Command parameter not implemented */
#define SMTP_SERV_NOACCMAIL 521 /* Server error: <domain> does not accept mail (see rfc1846) */
#define SMTP_SERV_STARTTLS 530 /* Server error: Start TLS needed */
#define SMTP_SERV_AUTHERR 535 /* Server error: Authentication failed */
#define SMTP_SERV_NOMBOXNM 550 /* Server error: Requested action not taken: mailbox unavailable */
#define SMTP_SERV_USRNOLOCL 551 /* Server error: User not local; please try <forward-path> */
#define SMTP_SERV_EXCSTOR 552 /* Server error: Requested mail action aborted: exceeded storage allocation */
#define SMTP_SERV_MBXNMNALL 553 /* Server error: Requested action not taken: mailbox name not allowed */
#define SMTP_SERV_TMUNKCOM 554 /* Server error: Transaction failed*/