在我的 node.js 应用程序中,它运行在 1 个 Heroku worker 上,需要不时发送电子邮件。逻辑如下:
var transporter = Email.createTransport({
service: 'yahoo',
auth: {
user: process.env.CRAWLER_MAIL,
pass: process.env.CRAWLER_PWD
}
});
transporter.sendMail({
from: process.env.CRAWLER_MAIL,
to: process.env.CRAWLER_RCVR_MAIL,
subject: 'subject',
text: 'text'
}, function(err, result) {
if (err !== null) {
console.log(err);
} else {
...
}
});
我用 foreman start
测试了它,它工作正常。尽管如此,一旦部署到 Heroku,传输器总是会发出状态代码为 '564 的错误:我们无法传递您的消息。请尝试通过添加一些文本重新发送消息。”
process.env.
保存正确的值,我检查过,text
始终是一个字符串。
有什么问题吗?
最佳答案
我无法使用我的帐户详细信息重现您的问题。
它可能与发件人/收件人电子邮件有关吗?他们都是@yahoo.com 地址吗? 论坛上有一些关于雅虎群组电子邮件特别是无法正常工作并出现该错误的讨论。与雅虎更改其 DMARC 有关最近的政策。
Nodemailer从子模块 nodemailer-wellknown 加载预定义的“知名”服务
这是在 createTransport()
中使用 service: 'yahoo'
时加载的当前定义:
https://github.com/andris9/nodemailer-wellknown/blob/master/services.json#L160
一些值得尝试的事情:
- 将 smtp 服务器切换到
plus.smtp.mail.yahoo.com
。 - 尝试使用和不使用
@yahoo.com
的用户名> - 确保您是从真实的电子邮件地址发送的,而不是别名。
我们使用 Mandrill使用我们的 Nodemailer 应用程序在 Heroku 上使用 SMTP。
非常可靠,每月发送的前 12k 封电子邮件是免费的!
关于node.js - 使用 nodemailer 发送电子邮件在 Heroku 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25186424/