【问题标题】:Emails sent via nodemailer from my server come through as spam: (unknown sender)从我的服务器通过 nodemailer 发送的电子邮件是垃圾邮件:(未知发件人)
【发布时间】:2018-01-16 14:59:03
【问题描述】:

第一次使用 Node 并使用电子邮件配置。我下载了这个application from here,它可以工作(使用 mustache.js 为电子邮件生成模板),但测试电子邮件最终出现在我的 gmail 垃圾邮件中。

from:   via vps1234.inmotionhosting.com 
to: thisisme@gmail.com
date:   Tue, Aug 8, 2017 at 5:30 PM
subject:    Thanks! and review your experience
mailed-by:  vps1234.inmotionhosting.com
security:    Standard encryption (TLS) Learn more

-

var nodemailer = require('nodemailer'); 
let transporter = nodemailer.createTransport({
      service: ' ',
      secure: false,  
      port: 25,
      auth: { 
            user: 'thisisme@mydomain.com',
            pass: 'password1234'
        },
      tls: {
        rejectUnauthorized: false,
    }
 }),


EmailTemplate = require('email-templates').EmailTemplate,
path = require('path'),
Promise = require('bluebird');

let users = [
    {
        name: 'John',
        note: 'I found your purse',
        email: 'recipient@gmail.com',
    }
];



function sendEmail (obj) {
    return transporter.sendMail(obj);
}

function loadTemplate (templateName, contexts) {
    let template = new EmailTemplate(path.join(__dirname, 'templates', templateName));
    return Promise.all(contexts.map((context) => {
        return new Promise((resolve, reject) => {
            template.render(context, (err, result) => {
                if (err) reject(err);
                else resolve({
                    email: result,
                    context,
                });
            });
        });
    }));
}

loadTemplate('welcome', users).then((results) => {
    return Promise.all(results.map((result) => {
        sendEmail({
            to: result.context.email,
            from: 'Me :)',
            subject: result.email.subject,
            html: result.email.html,
            text: result.email.text,
        });
    }));
}).then(() => {
    console.log('Yay!');
});

这是 Nodemailer 样板,我也在我的服务器上进行了测试,它工作正常,电子邮件没有被标记:

var nodemailer = require('nodemailer');

let transporter = nodemailer.createTransport({
    service: ' ',
    secure: false,
    port: 25,
    auth:{
        user: 'thisisme@mydomain.com',
        pass: 'password1234'
    },
    tls: {
        rejectUnauthorized: false,
    }
});


let helperOptions = {
    from: '<thisisme@mydomain.com>',
    to: 'recipient1234@gmail.com',
};

transporter.sendMail(helperOptions, (error, info) =>{
    if(error){return alert(error);}
    console.log("sent" . info);
})

【问题讨论】:

  • 一般来说,从您自己的 Web 服务器发送电子邮件是个坏主意,您见过 Amazon SES 或 Mailgun 吗?这些服务将提供 SMTP 端点来发送电子邮件(它们会完成所有涉及不被标记为垃圾邮件的繁重工作)

标签: node.js email nodemailer


【解决方案1】:

被标记为垃圾邮件的消息与其说是生成它的代码的函数,不如说是其他一些事情,例如:

  • 实际内容(文本、链接等)
  • 它来自的域

第一个问题只是你必须玩的东西。 MailMonitor 等服务可以帮助您调整内容,以了解 gmail 和其他人如何处理它。措辞、HTML 与纯文本、链接与无链接等都起作用。

就域而言,您需要设置 SPF(发件人策略框架)和 DKIM 条目,以从根本上验证您的域是否是正确的发件人。 “未知发件人”很可能是缺少 SPF 记录。

对于 SPF,这里是 article。 对于 DKIM,这里是 another

请注意,我只是在谷歌上搜索过 - 它们似乎是不错的文章,但我相信还有其他很好的来源。

它的要点是您需要在 DNS 中创建几个 TXT 条目。有诸如 SPF 生成器之类的工具可以帮助您解决此问题。它并不像听起来那么复杂。

完成此操作后,您可能仍会收到垃圾邮件,但这肯定会有所帮助。您可以试用Amazon SESSendGrid 等服务,它们可能比您当前的SMTP 服务器提供更好的发送“有效性”。

【讨论】:

    猜你喜欢
    • 2017-03-29
    • 1970-01-01
    • 2014-11-14
    • 2010-12-12
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 2012-05-27
    • 2013-10-17
    相关资源
    最近更新 更多