【问题标题】:nodemailer not sending emails when deployed to heroku部署到heroku时nodemailer不发送电子邮件
【发布时间】:2021-09-11 04:09:18
【问题描述】:

我有一个用于发送电子邮件的 nodejs 代码,当我在本地运行它时有效,但当我将它部署到 heroku 时无效

这是有问题的代码

app.post('/contact', urlencodedParser, function(req, res) {
        console.log("post contact page");
        console.log("this is req: ");
        console.log(req.body);
        
        let mailOpts, smtpTrans;
        smtpTrans = nodemailer.createTransport({
            service: 'gmail',
            auth: {
                user: 'email',
                pass: 'password'
            }
        });
        mailOpts = {
            from: req.body.fname + ' <' + req.body.email + '>',
            to: 'email',
            subject: 'New message from contact form at your portfolio page',
            text: `${req.body.fname} (${req.body.email}) says: \n \n ${req.body.msg}`
        };
        smtpTrans.sendMail(mailOpts);

        res.render("pages/Contact");
    });

我该怎么办?这是我的代码还是 heroku 部署的问题?

【问题讨论】:

  • 代码有效,因此可能是环境问题。确保您在调用中查找返回码。 gmail如何解析到服务器?您的应用程序是否连接或 Heroku 是否阻止出站连接?你得到你的控制台输出了吗?你有日志吗?
  • 如何检查这两个问题?
  • 我从未使用过 Heroku,但如果 ti 只是一个 linux,您可以使用 tcpdump 来查看是否有任何出站流量。不过,从日志开始,然后检查所有返回码。 nodemailer.com/smtp 说有记录器和调试选项可以很好地启用。此外,您泄露了凭据,如果是真的,请更改它们。
  • nodemailer.com/usage 显示您可以在 sendMail 上启用的回调。

标签: node.js nodemailer


【解决方案1】:

尝试在初始化nodemailer时指定端口:

const transporter = nodemailer.createTransport({
        port: 587,
        service: 'gmail',
        auth: { user: user, pass: pass },
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-18
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 2015-05-19
    相关资源
    最近更新 更多