使用ESP32发送邮件
使用esp32远程发送邮件
最近在网上冲浪时发现这么一个有意思的网站:SendCloud官网,这个网站主要是通过开放接口给用户,使用http申请发送短信或者发送邮件,一般来说通常发送的内容为广告邮件或者是短信验证码,如果使用esp32访问这个接口,就可以变相的使用esp32发送邮件,实现诸如数据上报、入侵检测之类的功能
1、申请账号获取密钥
sendcloud注册完成后默认是免费用户,每天有十条免费的邮件额度,对于一般情况来说够用了,如果想充钱提高额度,需要先进行企业认证,对于一般的开发者来说,企业认证还是有困难的,所以免费用户凑活用吧
首先他会给用户生成默认的apiUser和apiKey,在那个页面关闭后apiKey就再也找不到了,只能在这里重新申请一下,一定要妥善记录apiKey
2、编写测试demo
使用POST的方式发送邮件申请,我为此封装了一个接口,将代码中的apiUser和apiKey更改为自己的
String apiUser = "sc_ba7wax_*****JKcCu";
String apiKey = "dfcbbfa3**********************1c699";
uint8_t send_email(String to,String from,String fromName,String subject,String html)
{
if(WiFi.status() != WL_CONNECTED)
{
Serial.printf("wifi is not connected!\r\n");
return 0;
}
HTTPClient http; // 创建 WiFiClient 实例化对象
String send_buff = "&apiUser="+apiUser\
+"&apiKey="+apiKey\
+"&to="+to\
+"&from="+from\
+"&subject="+subject\
+"&html="+html;
http.begin("http://api.sendcloud.net/apiv2/mail/send");
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
Serial.println(send_buff);
int httpCode = http.POST(send_buff);
if(httpCode == 200)
{
String payload = http.getString();
Serial.println(payload);
http.end();
return 1;
}
else
{
Serial.printf("[HTTP] POST... failed, error: %s\n", http.errorToString(httpCode).c_str());
http.end();
return 0;
}
}
在代码中导入头文件#include <HTTPClient.h>
调用连接wifi网络后可以直接调用这个接口
uint8_t ret = send_email("1358898709@qq.com","15535904190@163.com","ESP32邮箱发送测试","ESP32邮件发送","esp32可以通过访问对应的API,实现发送相应内容,相应数据到指定邮箱中,用户可以自定义发送内容与发送对象,使用起来非常灵活");
等待esp32连接网络后发送一个邮件信息,稍等几秒就能在邮箱中看到邮件信息:
总体来说用http申请接口的方式还是特别简单,可以给家中添加一个温度收集装置:每天凌晨将24小时的温度报表发送到邮箱;或者是做一个入侵检测:通过人体传感器检测有人闯入设防地点后,发送邮件到手机。实际测试过程中发现QQ邮箱可以正常接受但是163邮箱无法接受,从后台可以看到163邮箱被驳回,因此强烈建议使用QQ邮箱收信。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。