HELO v domain >v CRLF >
用 C++ 发邮件
近段时间,实验室电脑的 IP 频繁地改变,搞得想用远程偷下懒都不行。这时想到的 解决方法有:静态IP,动态域名,自己解决。静态 IP 虽然可以自己指定,但一关机后,与 对方冲突就完了,作罢。免费的动态域名又要手机认证,也作罢。最后只能自己解决。解决 方案是写一个程序不断地检测本机
IP ,如果改变了,就发邮件通知。检测本机 IP 很简单,
就略过。这里介绍下怎样发邮件吧。 发邮件前,需要理解 SMTP(Simple Mail Transfer Protocol) 。 SMTP 是电子邮件从 客户机传输到服务器或从某一个服务器传输到另一个服务器使用的传输协议。
SMTP 是请 求/ 响应协议,命令和响应都是基于 ASCII 文本,并以 CR 和 LF 符结束。响应包括一个 表示返回状态的三位数字代码。在 TCP 协议 25 端口监听连接请求。其命令如下:
SMTP 命令 命令说明
识 别发送方到接收 SMTP 的一个 HELO 命令
AUTH LOGIN
码后的用户名与密码进行登陆
MAIL FROM: v reverse-path >v CRLF>v reverse-path >为发送者地址。 此命令告 诉接收方一个新邮件发送的开始, 并对所有的状态和缓冲区进行初始化。 此命令开始一个邮 件传输处理,最终完成将邮件数据传送到一个或多个邮箱中。
RCPT TO:v forward-path >v CRLF>v forward-path >标识各个邮件接收者的地
DATA v CRLF >
>标识数据的结尾。REST v CRLF > NOOP v CRLF> QUIT v CRLF> VRFY v string >命令。
EXPN v string >用。接收SMTP将把其后的行为看作邮件数据去处理,以v CRLF>.v CRLF
退出 /复位当前的邮件传输
要求接收 SMTP 仅做 OK 应答。(用于测试)
要求接收 SMTP 返回一个 OK 应答并关闭传输。
v CRLF>验证指定的邮箱是否存在,由于安全因素,服务器多禁止此
v CRLF>验证给定的邮箱列表是否存在,扩充邮箱列表,也常禁止使查询服务器支持什么命令
c
>
> 33A Ll§旦「iimiTi 叵(这是解屯启的仁左) 334 pas5-.VGrd:(遠是解密后的信息D A
<}
性担比@:口.亡oi 竹r 昨丸ibj 乜凸2电w 「们1白in
2:向服务器标识用户同 authorls2ero ( ^fflBase&4加密) <} Z E 「Q (要用日3SEW 加密】 3^ 235 t.Liflienflcation successful 7 4:捋定绘信者〔mall fronY^ero©^/;n ) 、 :250 隔ilOKL 〉 E :指走收信駅「匚血札三两血口匚口吋,「「|) 2:0 ---------------- 总咙送数据(加怡『,口) z 3^4 End dals^illl 250 l.hil OK queued as sintuS.DoCo^E 匚I M M K O JQW Zeros PC 1 :逹立TC :F ■连摄(:25) 220 Ijjjgnn —Tti-spmrri GT fen 令日怕巾 quiti ri 221 Be