如何从Azure云中的nodejs应用程序发送gmail?

时间:2018-12-26 06:47:45

标签: node.js azure angular6 nodemailer

使用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',

2 个答案:

答案 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