使用nodemailer,我无法在本地发送邮件。但是天蓝色我无法发送邮件。我在下面给出了我的代码:
var smtpTransport = nodemailer.createTransport({
service: "gmail",
auth: {
user: 'xxx@gmail.com',
pass: 'xx'
}
});
mailOptions={
from: 'xxx@gmail.com',
to : 'xxxx@gmail.com',
subject : "Please confirm your Email account",
text: 'Hello world?',
html : "Hello,<br> Please Click on the link to verify your email.<br>Click here to verify"
}
console.log(mailOptions);
smtpTransport.sendMail(mailOptions, function(error, response){
if(error){
console.log(error);
res.end("error");
}else{
console.log("Message sent: " + response.message);
res.end("sent");
}
});
这是正确的方法还是我需要修改某些内容才能在Azure云中正常工作?你能帮我这个忙吗?
我在云中遇到以下错误:
{ Error: Invalid login: 534-5.7.14 <https://accounts.google.com/signin /continue?sarp=1&scc=1&plt=AKgnsbv9
534-5.7.14
534-5.7.14 i4B-3uDchhvH5tTH8yHwwR9VlDCAASd24gT6pvUq0R5bAUeoId> Please log
in via
534-5.7.14 your web browser and then try again.
534-5.7.14 Learn more at
534 5.7.14 https://support.google.com/mail/answer/78754
l185sm50619884pfl.54 - gsmtp
at SMTPConnection._formatError (/home/Cello1/studio/node_modules
/nodemailer/lib/smtp-connection/index.js:605:19)
at SMTPConnection._actionAUTHComplete (/home/Cello1/studio/node_modules
/nodemailer/lib/smtp-connection/index.js:1340:34)
at SMTPConnection._responseActions.push.str (/home/Cello1/studio
/node_modules/nodemailer/lib/smtp-connection/index.js:378:26)
at SMTPConnection._processResponse (/home/Cello1/studio/node_modules
/nodemailer/lib/smtp-connection/index.js:764:20)
at SMTPConnection._onData (/home/Cello1/studio/node_modules/nodemailer
/lib/smtp-connection/index.js:570:14)
at TLSSocket._socket.on.chunk (/home/Cello1/studio
/node_modules/nodemailer/lib/smtp-connection/index.js:710:55)
at emitOne (events.js:116:13)
at TLSSocket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
code: 'EAUTH',
答案 0 :(得分:0)
根据您的描述,我不知道您使用的Azure服务是什么。
如果您使用的是Azure App Service(包括Web应用程序,功能等),则需要了解some restrictions,这可能会引起问题。
如果您使用的是Azure VM或容器,请首先检查网络出站的配置。 GitHub中似乎有a similar issue,可以帮助您尝试通过oauth
进行身份验证以发送gmail。
通常,建议的发送邮件的方法是在Azure上使用SendGrid服务。您可以参考官方文档How to Send Email Using SendGrid from Node.js
来了解入门。
答案 1 :(得分:-1)
Gmail希望用户是实际用户,而不是机器人,因此,每次登录尝试时,它都会运行大量启发式方法,并阻止任何看起来可疑的内容,以保护用户免遭帐户劫持尝试。
例如,如果您的服务器位于另一个地理位置,则可能会遇到麻烦–一切都在您的dev机器上运行,但是消息在生产中被阻止。
根据nodemailer的官方documentation的建议,您可以尝试通过以下方式将登录名切换为XOauth2
或允许不受信任的应用程序:https://myaccount.google.com/lesssecureapps