gpt4 book ai didi

arduino - 我在尝试从 Arduino 和以太网扩展板发送电子邮件时收到来自 gmail 服务器的错误 530 5.7.0

转载 作者:行者123 更新时间:2023-12-02 18:27:50 26 4
gpt4 key购买 nike

我在尝试从 Arduino 和以太网扩展板发送电子邮件时收到来自 gmail 服务器的错误 530 5.7.0。

我想从我的 arduino uno 板发送一封电子邮件。我为它买了一个以太网扩展板。我在下面找到了使用以太网屏蔽发送电子邮件的代码,但失败了。Gmail 服务器显示“530 5.7.0”错误代码,但我不知道这意味着什么。我做错了什么?

/*
Email client sketch for IDE v1.0.1 and w5100/w5200
Posted December 2012 by SurferTim
*/

#include <SPI.h>
#include <Ethernet.h>

// this must be unique
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x59, 0x67 };
// change network settings to yours
IPAddress ip( 10, 6, 0, 248 );
IPAddress gateway( 10, 6, 0, 1 );
IPAddress subnet( 255, 255, 255, 0 );

// change server to your email server ip or domain
// IPAddress server( 1, 2, 3, 4 );
char server[] = "smtp.gmail.com";

EthernetClient client;

void setup()
{
Serial.begin(9600);
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);
Ethernet.begin(mac, ip, gateway, gateway, subnet);
delay(2000);
Serial.println(F("Ready. Press 'e' to send."));
}

void loop()
{
byte inChar;

inChar = Serial.read();

if(inChar == 'e')
{
if(sendEmail()) Serial.println(F("Email sent"));
else Serial.println(F("Email failed"));
}
}

byte sendEmail()
{
byte thisByte = 0;
byte respCode;

if(client.connect(server,25) == 1) {
Serial.println(F("connected"));
} else {
Serial.println(F("connection failed"));
return 0;
}

if(!eRcv()) return 0;
Serial.println(F("Sending helo"));

// change to your public ip
client.println(F("helo 1.2.3.4"));

if(!eRcv()) return 0;
Serial.println(F("Sending From"));

// change to your email address (sender)
client.println(F("MAIL From: <me@mydomain.com>"));

if(!eRcv()) return 0;

// change to recipient address
Serial.println(F("Sending To"));
client.println(F("RCPT To: <receiver@gmail.com>"));

if(!eRcv()) return 0;

Serial.println(F("Sending DATA"));
client.println(F("DATA"));

if(!eRcv()) return 0;

Serial.println(F("Sending email"));

// change to recipient address
client.println(F("To: You <receiver@gmail.com>"));

// change to your address
client.println(F("From: Me <me@mydomain.com>"));

client.println(F("Subject: Arduino email test\r\n"));

client.println(F("This is from my Arduino!"));

client.println(F("."));

if(!eRcv()) return 0;

Serial.println(F("Sending QUIT"));
client.println(F("QUIT"));

if(!eRcv()) return 0;

client.stop();

Serial.println(F("disconnected"));

return 1;
}

byte eRcv()
{
byte respCode;
byte thisByte;
int loopCount = 0;

while(!client.available()) {
delay(1);
loopCount++;

// if nothing received for 10 seconds, timeout
if(loopCount > 10000) {
client.stop();
Serial.println(F("\r\nTimeout"));
return 0;
}
}

respCode = client.peek();

while(client.available())
{
thisByte = client.read();
Serial.write(thisByte);
}

if(respCode >= '4')
{
efail();
return 0;
}

return 1;
}


void efail()
{
byte thisByte = 0;
int loopCount = 0;

client.println(F("QUIT"));

while(!client.available()) {
delay(1);
loopCount++;

// if nothing received for 10 seconds, timeout
if(loopCount > 10000) {
client.stop();
Serial.println(F("\r\nTimeout"));
return;
}
}

while(client.available())
{
thisByte = client.read();
Serial.write(thisByte);
}

client.stop();

Serial.println(F("disconnected"));
}

最佳答案

有一些方法可以使用arduino等嵌入式系统发送电子邮件。您的草图显示了如何将电子邮件直接发送到具有目标地址帐户的邮件服务器。

正如您所知,错误代码显示“必须首先发出 STARTTLS 命令”。这意味着需要 SSL 连接。当然,这是谷歌的限制之一。不幸的是,“Arduino 以太网扩展板”支持 SSL。因此,您可能需要检查另一个支持 SSL 的防护罩。

PHPoC Shield for Arduino ”可以作为替代方案。要使用此屏蔽,需要“ Arduino Library for PHPoC ”。该库提供了一些示例。 “EmailClient”示例可能就是您要寻找的内容。 enter image description here

/* arduino email client - send email to server directly */

#include "SPI.h"
#include "Phpoc.h"

PhpocEmail email;

void setup() {
Serial.begin(9600);
while(!Serial)
;

Phpoc.begin(PF_LOG_SPI | PF_LOG_NET | PF_LOG_APP);
//Phpoc.begin();

Serial.println("Sending email to server directly");

// setup From/To/Subject
email.setFrom("from_email_address", "from_user_name");
email.setTo("to_email_address", "to_user_name");
email.setSubject("Mail from PHPoC Shield for Arduino");

// write email message
email.beginMessage();
email.println("Hello, world!");
email.println("I am PHPoC Shield for Arduino");
email.println("Good bye");
email.endMessage();

// send email
if(email.send() > 0)
Serial.println("Email send ok");
else
Serial.println("Email send failed");
}

void loop() {
}

我运行这个草图供您引用。当然,我更改了一些参数,例如 from_email_address、from_user_name、to_email_address 和 to_user_name。 enter image description here

但发送邮件失败,错误代码为421-4.7.0。 enter image description here

根据错误消息,此电子邮件可能因 Google 邮件服务器上的垃圾邮件政策而被拒绝。无论如何,您的问题 - 从 gmail 服务器收到错误 530 5.7.0 - 可以使用这个适用于 Arduino 的 PHPoC Shield 来解决。

如果您仍想向 Google 发送电子邮件,以下引用将对您有所帮助。

关于arduino - 我在尝试从 Arduino 和以太网扩展板发送电子邮件时收到来自 gmail 服务器的错误 530 5.7.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42644308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com