node.js - 使用 nodemailer 发送电子邮件在 Heroku 上失败

标签 node.js heroku nodemailer

在我的 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/

相关文章:

node.js - Perl 的 websocket 客户端

node.js - Angular2 - 使用 Bitbucket(或其他 GIT 存储库)进行 Azure 持续部署

javascript - 使用 nodemailer 一次发送多封电子邮件

javascript - 如何使用 node.js 将 axios 响应发送到变量

node.js - npm/咕噜声 : is it possible to install grunt without npm?

python - 在 Heroku 上使用线程更新数据库?

php - 在 Heroku 上的 Node 中运行 php

python - 如何将swaggerhub生成的flask swagger服务器部署到heroku?

javascript - Nodemailer - MS Exchange 服务器 - 无法验证第一个证书时出错

node.js - ZOHO 邮件的 Nodemailer