使用esp32远程发送邮件

最近在网上冲浪时发现这么一个有意思的网站:SendCloud官网,这个网站主要是通过开放接口给用户,使用http申请发送短信或者发送邮件,一般来说通常发送的内容为广告邮件或者是短信验证码,如果使用esp32访问这个接口,就可以变相的使用esp32发送邮件,实现诸如数据上报、入侵检测之类的功能

1、申请账号获取密钥

sendcloud注册完成后默认是免费用户,每天有十条免费的邮件额度,对于一般情况来说够用了,如果想充钱提高额度,需要先进行企业认证,对于一般的开发者来说,企业认证还是有困难的,所以免费用户凑活用吧
首先他会给用户生成默认的apiUser和apiKey,在那个页面关闭后apiKey就再也找不到了,只能在这里重新申请一下,一定要妥善记录apiKey

1.png

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连接网络后发送一个邮件信息,稍等几秒就能在邮箱中看到邮件信息:

2.png

总体来说用http申请接口的方式还是特别简单,可以给家中添加一个温度收集装置:每天凌晨将24小时的温度报表发送到邮箱;或者是做一个入侵检测:通过人体传感器检测有人闯入设防地点后,发送邮件到手机。实际测试过程中发现QQ邮箱可以正常接受但是163邮箱无法接受,从后台可以看到163邮箱被驳回,因此强烈建议使用QQ邮箱收信。

文章目录