【发布时间】:2016-10-27 17:23:11
【问题描述】:
我正在使用我的 gmail 帐户向我的用户电子邮件发送 smtp 警报消息。例如,注册或帐户被阻止等。我使用的是 nodemailer,并且电子邮件已成功发送,没有一次失败。下面是我的代码。
var nodemailer = require("nodemailer");
// create reusable transport method (opens pool of SMTP connections)
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Gmail",
auth: {
user: "gmail.user@gmail.com",
pass: "userpass"
}
});
// setup e-mail data with unicode symbols
var mailOptions = {
from: "Fred Foo ✔ <foo@blurdybloop.com>", // sender address
to: "bar@blurdybloop.com, baz@blurdybloop.com", // list of receivers
subject: "Hello ✔", // Subject line
text: "Hello world ✔", // plaintext body
html: "<b>Hello world ✔</b>" // html body
}
// send mail with defined transport object
smtpTransport.sendMail(mailOptions, function(error, response){
if(error){
console.log(error);
}else{
console.log("Message sent: " + response.message);
}
// if you don't want to use this transport object anymore, uncomment following line
//smtpTransport.close(); // shut down the connection pool, no more messages
});
就在昨天,将 google for business 帐户注册到我的@mydomain 帐户,然后将 gmail 替换为我的新 google for business 电子邮件
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Gmail",
auth: {
user: "user@mydomain.com",
pass: "userpass"
}
});
问题是,它不会使用新帐户发送电子邮件。它宁愿在我的控制台上返回标题错误。我尝试更改新帐户的安全性以允许来自谷歌控制台的安全性较低的应用程序都无济于事。请问这个错误意味着什么?还考虑使用我的电子邮件的用户名和密码,这是最好的选择吗?请问如何最好地实现?任何帮助将不胜感激。
【问题讨论】:
-
节点邮件程序显然试图连接到 localhost(127.0.0.1),这不太可能是 Google 的邮件服务器。这意味着运输设置有问题。试试这个
nodemailer.createTransport('smtps://user%40gmail.com:pass@smtp.gmail.com'); -
@Molda 感谢您抽出宝贵时间。您的解决方案适用于 gmail.com 帐户。当我用
@mydomain.com替换电子邮件时它失败了。我得到上面的错误。我很困惑,考虑到两者都是谷歌帐户,我期待它能够工作。 -
难道你不会把 smtp.gmail.com 改成 smtp.mydomain.com 吗?
-
@Molda 不,我不是。我用过
nodemailer.createTransport('smtps://user%myDomain.com:pass@smtp.gmail.com');。