3603| 2
|
基于nodemcu的透传研究之发QQ邮件 |
网上关于nodemcu的教程有许多,但是我没找到有关于发邮件的教程,现在很多单片的数据基本上都是采集发送到物联网平台,我觉得如果数据能以邮件的方式发送到自己的邮箱这好像是个不错的选择。于是乎就自己研究起来,一顿操作那个苦呀,研究邮件传输协议SMTP,首先尝试用JAVA的socket实现,然后又涉及到各个邮箱的登陆认证的模式不同,之后发现nodemcu本来就提供了例程(传送门):( 下面就是根据nodemcu提供的例程进行修改达到发邮件的目的 1.下载nodemcu-firmware 2.我下载的是2.2.1版本,解压后打开nodemcu-firmware-2.2.1-master_20180915\lua_examples\email 3.用ESPlorer打开send_email_smtp.lua,本人的电脑抽风了,打不开ESPlorer,就用先SciTE打开 4.看到第一句require("base64"),咦哪里来的base64呀,于是搜索整个文件夹nodemcu-firmware发现找到了base64.c和base64.h,不对呀这不是需要lua文件,于是乎,我照着源文件一顿操作把它变成了base64.lua,后来发现在云构建固件的时候就有个encoder的modules,那个难受呀,后悔没把全部模块记清楚。 5.由于SMTP协议发送自己的邮箱和密码时需要用base64加密,所以实现发邮件功能是需要encoder模块的encoder.toBase64, 6.接着修改里面的send_email_smtp.lua选项 local MY_EMAIL = "esp8266@domain.com" local EMAIL_PASSWORD = "123456" local SMTP_SERVER = "smtp.server.com" local SMTP_PORT = "587" local mail_to = "to_email@domain.com" local SSID = "ssid" local SSID_PASSWORD = "password" MY_EMAIL当然是自己的邮箱,然后密码,这也折腾了我很久,发现现在的SMTP协议为了安全,增加了各种限制条件,具体参考:SMTP验证方式种类(LOGIN、PLAIN、CRAM-MD5) 我这里用QQ邮箱作为示例,首先当然是登陆QQ邮箱,打开设置(名字下面)-账户 发现第三方式用授权码登陆的,点击第一项开启POP3/SMTP服务,然后它会让你发短信到某个号码,然后点击已发送,就可以得到十六位的授权码,用笔记录下这个授权码,这个授权码就是你登陆的密码了, 接着是SMTP_SERVER和SMTP_PORT服务器和端口,可以参考QQ邮箱官方的教程,SMTP_SERVER="smtp.server.com",SMTP_PORT="465",这里要注意456口是需要支持SSL,如果不用465可以尝试25,但是好像不行,QQ邮箱为了安全465端口好用。这里说到SSL,在构建固件的时候就要选上支持SSL 然后mail_to,就是你要发送的邮箱地址,SSID = "ssid",SSID_PASSWORD = "password",这个比较简单就是你的wifi名称和密码 7.修改部分代码,修改base64.enc()为encoder的modules中的函数encoder.toBase64(), 为了支持SSL,修改108行中的net.createConnection(net.TCP,0)为tls.net.createConnection(net.TCP,0) 8.自定义自己要发的内容,代码的最后黄色部分就是要发的内容。 9.用ESPlorer把代码上传上芯片,最终效果为 本人第一次发帖,请多多指教,有任何疑问也可以探讨,源码我觉得没必要发了(我只是代码的搬运工),因为源码在例程里面,稍稍修改就能用。 以后会继续发有关nodemcu的教程 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed