你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用lwip发邮件的注意事项

[复制链接]
STM32F103-34799 发布时间:2014-5-12 15:49
1.只有在lwip1.4.1版本下实现的例子中有对smtp协议的实现。之前的版本没有实现smtp协议。
 
2.smtp是基于tcp协议进行传输的,实质是对文本进行解析。
 
3.其发送邮件的过程可以通过windows下的telnet程序和邮件服务器交互实现。具体过程如下:
首先进入cmd界面,输入telnet smtp.sina.com 25(这里的smtp.sina.com和25分别是smtp服务器和端口号)
连接成功后,输入ehlo smtp.sina.com,返回服务器支持的操作,每项操作以"250"开始。

输入auth login。一般的服务器会返回334 VXNlcm5hbWU6,意思是要求输入用户名,即你的邮箱地址。
VXNlcm5hbWU6是对user的base64编码。这里需要输入你的邮箱地址,这个地址是需要经过base64编码后的地址。
服务器返回334 UGFzc3dvcmQ6。意思是需要你输入密码,UGFzc3dvcmQ6为password的base64编码。这里需要输入你经过base64编码后的密码。如果用户名密码正确,服务器将返回235,验证通过,已验证,验证成功等提示,不同的邮箱提示不同。这意味着你可以发邮件了。否则意味着验证失败。

验证通过之后,就可以不用base64编码了。
输入mail from: 回车,填写发件人地址。返回250 ok。
输入rcpt to: 回车,填写收件人地址。返回250 ok。
输入data回车,返回提示,以CRLF . CRLF作为数据结束标志,这时可以输入邮件的标题,邮件等内容。返回250 ok queue id xxxxxx,表示邮件发送成功。
在smtp.c中实现的也是对这些命令的解析,smtp服务器对命令的响应是一个字符串。格式为一个数字+响应的说明。数字如果以2开头表示成功,4,5开头表示失败。
 
4.使用smtp.c过程中,发现三个问题。其一,需要将SMTP_SUPPORT_AUTH_PLAIN置为0,即不支持明文身份验证,否则会返回错误或者链接超时。其二,如果发送中文字符需要关闭SMTP_CHECK_DATA数据检查宏,因为smtp.c的作者认为大于0x80的数据或者回车换行为非法字符,导致数据发送失败。其三,不同的邮箱user的base64编码不同,有的默认用user(VXNlcm5hbWU6),有的默认用User(dXNlcm5hbWU6),这个需要修改下smtp.c的源码,#define SMTP_RESP_LOGIN_UNAME   "XNlcm5hbWU6",忽略第一个字符,因为'U'和'u'的高2bit都是01,只有低6bit不同
 
5.对邮箱的测试结果为:可以通过smtp.163.com,smtp.sina.com,smtp.139.com以及高校的邮箱发送数据。其中163邮箱服务器发现异常,会暂时停止该ip的身份验证,发邮件等操作。qq,gmail则使用安全连接发送邮件,在输入auth login之后便提示失败需要安全连接。所以无法使用smtp.c发送邮件。
 
注:base64编码是,将一个bit流中的数据按照6bit一组作为索引,查找一个预先确定的字符数组中的字符作为编码后的第一个字符,再从原来的比特流中取6个bit,查表取的第二个编码后的字符。以此类推,将整个bit流转化成base64编码。6个bit一共可以表示64个字符。所以这个字符数组是一个长度为64的字符数组。在lwip的smtp.c文件中叫做base64_table。


 
收藏 1 评论5 发布时间:2014-5-12 15:49

举报

5个回答
feel-376797 回答时间:2014-5-12 15:59:48

RE:使用lwip发邮件的注意事项

谢谢楼主分享!
STM32F103-34799 回答时间:2014-5-12 17:14:26

RE:使用lwip发邮件的注意事项

多谢朋友支持
沐紫 回答时间:2014-5-15 14:57:43

RE:使用lwip发邮件的注意事项

多谢楼主共享
yklstudent-1794 回答时间:2015-9-30 17:47:58
多些楼主的资料,终于搞明白SMTP的工作过程了
ptiinngg 回答时间:2015-10-1 11:44:33
刚好在搞lwip,感谢楼主分享

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版