介绍
介绍
福哥需要给TFPHP框架添加一个TFMail对象,因为发送电子邮件是通过Socket和SMTP服务器通讯完成的,这里面发送的数据包和接收的数据包都是要遵循SMTP协议的。
今天福哥就将SMTP协议的基本流程整理出来,根据这个流程,任何可以直接操作Socket发送接收封包的语言就都可以实现发送电子邮件的功能了。
SMTP协议
SMTP协议基本上就是使用Socket和SMTP服务器对话,这一切从客户端连接SMTP服务器开始。每次都是客户端“说”一句,服务器端“答”一句。客户端每“说”一句后面要以CRLF结尾。服务器端“答”一句最前面会有一个三位数的状态码用来识别结果是否是预期的。
发送邮件过程
连接SMTP服务器
连接SMTP服务器,可以使用telnet进行测试
接收220消息
220 smtp.qq.com Esmtp QQ Mail Server
发送Hello
发送一个Hello消息给服务器
helo smtp.qq.com
接收250消息
250 smtp.qq.com
发送认证
发送auth login
auth login
接收334消息
334 VXNlcm5hbWU6
发送经过base64加密的用户名
enlAS253TXkuS29t
接收334消息
334 UGFzc3dvcmQ6
发送结果base64加密的密码
RGWiRTQzOjE=
接收235消息
235 Authentication successful
发送寄信地址消息
mail from:<12345@qq.com>
接收250消息
250 Ok
发送收信地址消息
rcpt to:<54321@qq.com>
接收250消息
250 Ok
发送数据
data
接收354消息
354 End data with <CR><LF>.<CR><LF>
发送数据,这里参考上一步接收到的信息里的提示,意思是说接下来可以随便输入数据,输入多条数据也可以,只要最后一条以“CRLF.CRLF”结尾即可(这里说的“CRLF”就是"\r\n",ASCII码对应10、11)
注意:这里让以“CRLF.CRLF”结尾,后面就不要再添加更多内容了,添加CRLF也不行。
subject,指定了邮件标题
content-type,指定了邮件正文的类型
subject: this is subject content-type: text/html this is body... this is body... ... this is body... CRLF.CRLF
接收250消息
Ok: queued as
总结
福哥将STMP协议给大家介绍了一下,遵循这些协议内容就可以完成发送电子邮件的功能了。