首页

ESP8266 WiFi模块如何发送邮件?

在这个项目中,我将向您展示如何使用ESP8266发送电子邮件。对于这个项目,我将使用DFRobotFireBeetle ESP8266物联网板。在ESP8266模块的帮助下发送电子邮件将是物联网实现的一个进步。

简介

随着物联网(IoT)的扩展,物联网的应用范围从控制设备扩展到监控设备(如传感器)和发送电子邮件。

通过从ESP8266模块发送电子邮件,您可以了解正在监视的任何传感器的状态,或者在发生入室盗窃或入侵者警报时,您可以收到紧急电子邮件。

所以,不要再拖延了,让我向您展示使用ESP8266 WiFi模块发送电子邮件所需的所有步骤。

ESP8266董事会

如前所述,我将在这个项目中使用DFRobot FireBeetle ESP8266板来发送电子邮件。你可以使用任何ESP8266模块,我已经用我的esp01 ESP8266板测试了这个过程,它工作得很好。

DFRobot FireBeetle ESP8266评论FireBeetle

由于DFRobot FireBeetle ESP8266板具有所有必需的组件,如MicroUSB端口,3.3V调节器等。我不需要与董事会建立任何额外的联系。

我所需要做的是在端口插入一个MicroUSB电缆,并将其连接到计算机(与驱动程序已经安装和Arduino IDE已经设置)。

这是选择DFRobot FireBeetle ESP8266板而不是我的常规ESP-01模块的主要原因之一。

因此,我建议您按照以下项目所述,阅读DFRobot FireBeetle ESP8266板的连接指南:Dfrobot firebeetle esp8266回顾和连接指南

SMTP服务器设置

为了从ESP8266模块发送电子邮件,您需要遵循SMTP协议。因此,SMTP服务器需要发送电子邮件,ESP8266将充当SMTP客户端。

我已经尝试了Gmail的SMTP设置几次,以发送电子邮件使用ESP8266,但它不是富有成效。所以,我决定使用第三方SMTP服务器,我发现“SMTP2GO”是一个可靠的选择。

发送电子邮件使用ESP8266 SMTP2GO回家

所以,去SMTP2GO网站和注册一个免费的帐户。创建帐户后,第一步是创建“SMTP用户名”和“SMTP密码”。事实上,当您确认电子邮件地址并首次登录SMTP2GO时,您将获得这一信息。

留下用户名,因为它是电子邮件地址和改变SMTP密码与您自己的选择。注意,这是SMTP密码,与SMTP2GO登录密码不同。

请记录“SMTP用户名”和“SMTP密码”。

现在,进入SMTP2GO应用的仪表板,在左侧的访问栏,点击“设置”,然后点击“用户”。

在这里,您可以看到有关SMTP服务器和端口号的信息。通常情况如下:

  • SMTP服务器:mail.smtp2go.com
  • SMTP端口:2525

使用ESP8266 SMTP2GO服务器发送邮件

当您需要在代码中使用这些数据时,请记下这些信息。

编码用户名和密码

“SMTP用户名”和“SMTP密码”需要用ASCII字符集编码为Base64格式。为此,你可以使用Arduino库或网站BASE64ENCODE

使用ESP8266 Base64编码发送邮件

分别输入SMTP用户名和密码,并注意编码的内容。例如,如果您的电子邮件地址是test@gmail.com,它将被编码为dGVzdEBnbWFpbC5jb20=。

如果您的密码是“testpassword”(不包括引号),它将被编码为dGVzdHBhc3N3b3Jk。

代码

现在,让我向您展示使用ESP8266发送电子邮件所需的代码。

在代码中,进行必要的更改,如SSID,您的WiFi连接的密码,发件人和收件人的电子邮件地址,Base64编码SMTP用户名和SMTP密码。

守则的解释

该代码的初始部分用于将ESP8266 WiFi模块连接到互联网。如果连接成功,您将获得一个IP地址。

接下来是发送电子邮件的实际代码。代码可以分为8个阶段。

阶段1:在阶段1中,您将连接到端口上的SMTP服务器。这是使用命令客户端完成的。连接(SMTP_SERVER SMTP_PORT)。作为回应,你会得到一个220的代码。

阶段2:使用EHLO命令(以前的HELO命令)问候SMTP服务器。命令是client。println(“EHLO www.example.com”);

如果连接成功,您将得到250响应码。

阶段3:第三阶段是使用AUTH LOGIN命令对用户进行授权。命令是client。println(“身份验证登录”);。您将得到一个响应334,表示成功。

阶段4:请依次发送已编码的SMTP用户名和密码。命令是client。println(" Base64, ASCII编码的用户名");和客户。println(" Base64, ASCII编码密码");

如果验证成功,您将得到一个235 Response。

第五阶段:现在是时候从字符串发送邮件,你必须输入发件人的电子邮件地址使用格式mail from:< " + string (from)+ ' > ';

命令是client。println(“邮箱:sender@gmail.com”);

第六阶段:然后使用格式rcpt to:< " + string (to)+ ' > '发送rcpt到字符串。命令是client。println(“收件人:receiver@gmail.com”);。

第七阶段:在电子邮件的Message正文之后发送“DATA”。的命令是

client.println(“数据”);

客户端。println(“:receiver@gmail.com”);

客户端。println(来自:sender@gmail.com);

客户端。println(" Subject: ESP8266 test e-mail\r\n ");

客户端。println("这是从ESP8266发送的测试电子邮件。\n ");

客户端。println(“测试电子邮件的第二行”);

第八阶段:最后,用“”结束邮件。,然后发送退出命令。

client.println(“。”);

client.println(“退出”);

所有这些命令和响应都将显示在Arduino IDE的串行监视器中。

使用ESP8266输出发送电子邮件

如果遵循上述所有步骤,您将能够成功地使用ESP8266发送电子邮件。

18岁的反应

    1. 在“setup”部分的最后一行,“byte ret = sendEmail();”调用电子邮件发送函数(下面的大字节),它内置了要发送的数据。如果你在循环中放入某种程序,它会检测一个按钮或传感器,你可以调用这条线路,它应该会工作得很好。

      1. Hi感谢这段代码这是唯一的电子邮件代码,第一次工作,我有一个问题是得到一个按钮按下发送工作,我假设这是所有到“字节ret = sendEmail()”被调用和我缺乏c++经验,你有任何示例代码作为指南,我已经尝试了只是把一个if/else在void循环。也许你可以建议一个好的教程,不掩盖这么多为什么这个错误,我在Z80 2k ram和七段显示机回到80年代,并在4×4键盘上编程十六进制,没有抽象层只是一本书,PCB和我.....现在我又要从头开始了……挫折无处不在,但我喜欢早晨流动剂的味道。

    2. 你好,
      我是arduino领域的新手如果这是一个愚蠢的问题,请原谅。
      我不明白上面的代码,必须驻留在esp8266 wifi模块或Arduino板上。
      你能帮我吗?
      谢谢

  1. 同样的问题,不允许发送550 smtp用户名的帐户
    这个问题是因为没有在SMTP2go仪表板中添加发送方域…

    但我没有我自己的发件人域名..是否有任何替代SMTP2go不使用发件人域
    你能帮忙吗?
    谢谢提前

  2. 我解决了这个问题:
    向smtp2go服务发送电子邮件并解释您的问题(. . " ..我用它在一个ESP微控制器上做物联网服务…,请允许使用没有自己的邮件服务器账号.... ")

    问候
    Juergen

    1. 非常感谢,3天了,我试着发送电子邮件,但它不工作,我只是问他们(格林尼治时间21点35分),他们在几分钟内回复并为我打开它,现在一切ok,再次感谢(y)

  3. 很好的教程。好的代码,作品。
    错误550:需要一个域名或请求smtp2go允许发送没有域名。

  4. 你好,

    我看到有几个人一直在问这个错误
    550该SMTP用户的帐户不允许发送
    你能为我们所有人提供解决方案吗?非常感谢

  5. 收到“550,SMTP用户名的帐户不允许发送”,联系他们,甚至提到这是一个大学项目,并给他们我的uni邮件,不管,他们的回应是

    因为你已经用一个免费的电子邮件地址注册了一个免费的帐户,我们要求“设置>发件人域”部分被设置和验证,然后你将被允许通过你的帐户发送邮件。这是我们采取的一种措施,以减少垃圾邮件,并提高您的出站邮件的可交付性。

    如果你没有自己的域名,你需要另找一个SMTP服务提供商。”

    现在我尝试使用谷歌SMTP服务器发送邮件…

  6. 虽然做了些调整,但还是成功了。最大的问题是电子邮件进入了垃圾邮件文件夹。找到了,解决了问题,现在完美了。感谢优秀的教程。这让我工作起来。

留下一个回复

你的电邮地址不会被公布。

Electronicshub图标
Baidu
map