发个邮件发送流程,SMTP应答原理

----------------------------------------------------------------
首先先了解下:
smtp协议常见返回码
----------------------------------------------------------------
220 服务器欢迎信息
250 命令执行成功
334 登录时候返回的base64编码
235 认证成功。

----------------------------------------------------------------
:::::::::::::::::::::::程序开始:::::::::::::::::::::::::::

创建网络连接,并登录Mail Server .
----------------------------------------------------------------
1.
程序创建套接字,并初始化套接字.
连接服务器,连接成功返回220 (服务器欢迎消息).
2.程序send() HELO hostname 程序向服务器问好..
wsprintf( cbBuffer, "HELO %s\r\n", lpInfo->szHost);
成功-服务器返回250,
否则失败.
3.程序Send() AUTH LOGIN hostname 向服务器说我要登录.
wsprintf( cbBuffer, "AUTH LOGIN\r\n", lpInfo->szHost);
成功-服务器返回334.
否则失败.

4.程序Send() base64_encode(UserName) 发base64加密的用户名到服务器.
成功-服务器返回334.
否则失败.

5.程序Send() base64_encode(PassWord) 发base64加密的密码到服务器.
验证成功-服务器返回235.
否则失败.
----------------------------------------------------------------
接下来一直向Server 发送DATA.(也就是邮件内容)
初始化lpInfo (lpInfo 是 Mail struct)
----------------------------------------------------------------
6.程序Send() MAIL FROM: <%s>\r\n 到服务器.
wsprintf( cbBuffer, "MAIL FROM: <%s>\r\n",lpInfo->szFrom );
成功-服务器返回250.
否则失败.

7.程序Send() RCPT TO: <%s>\r\n 到服务器.
wsprintf( cbBuffer, "RCPT TO: <%s>\r\n",lpInfo->szEmailAddress );
成功-服务器返回0.
否则失败.

8.程序Send() DATA\r\n 到服务器.
strcpy( cbBuffer, "DATA\r\n" );
成功-服务器返回0.
否则失败.
(下面是发送主题和内容)
9.
程序Send() Content 到服务器.
wsprintf( cbBuffer,"SUBJECT: %s\r\n
To: %s\r\n
FROM: %s\r\n\r\n
%s\r\n\r\n",
lpInfo->szSubject,
lpInfo->szEmailAddress,
lpInfo->szFrom,
lpInfo->szMessage
);
成功-服务器返回0.
否则失败.
---------------------------------------------------------------------
邮件发送完毕
下面 断开Mail Server 连接 关闭套接字
---------------------------------------------------------------------
10.程序Send() QUIT 到服务器.
strcpy(cbBuffer,"QUIT\n\n");
11.
关闭套接字,清理内存.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值