繁体   English   中英

Email 通过 nodemailer 发送进入垃圾邮件 gmail

[英]Email send through nodemailer goes into spam for gmail

我通过 nodemailer 发送 email,如果我从本地服务器运行,它会进入 gmail 的收件箱,但如果我从 Microsoft azure 服务器运行脚本,它会进入 gmail 的垃圾邮件。 以下是我的脚本

var nodemailer = require('nodemailer');
var EmailTemplates = require('swig-email-templates');
var smtpConfig =  {
        service: 'smtp.office365.com',
        host: 'smtp.office365.com',
        port: 587,
        starttls: {
            enable: true
        },
        secureConnection: true,
        auth: {
            user: 'xxxxx@yyyy.com',
            pass: 'zzzzzz'
        }
    }

var templates = new EmailTemplates();  
var transporter = nodemailer.createTransport(smtpConfig);   

var context = {
  username:'Rajesh',
  email:'xxxxx@gmail.com',
  link : 'www.google.co.in'
};

templates.render('activate_email.html', context, function(err, html,text, subject) {    

  transporter.sendMail({
    from: '"Product Name👥" <no-reply@xxxxx.com>', // sender address
    to: 'xxxx@gmail.com',
      subject: 'Account activation',
      html: html,
      text:text    
  });    
});

事实是,您的问题没有简单的单行解决方案:) 发生这种情况的原因有很多,以下是其中一些:

  • 您的主机被标记为垃圾邮件 - 如果您尚未验证电子邮件或从同一主机发送过多电子邮件,则会发生这种情况。 共享主机通常被标记为这样,因此邮件服务器会定期将它们标记为垃圾邮件

  • from外地比你被允许使用一个不同的-因为我看到你正在使用SMTP,还有你可以发送邮件严格的规定。 当然,您始终可以从mark@facebook.com发送电子邮件,但是由于您的 SMTP 主机不是facebook.com,您的电子邮件肯定会被标记为垃圾邮件

  • 您可以在许多不同的邮件中对您的电子邮件进行签名,从而向服务器保证这封电子邮件是您发送的并且具有正确的签名。 在线查看这样做的方法。

  • 在开发过程中,您发送了许多类似的电子邮件 - 发送完全相同的“测试”电子邮件是您的电子邮件被列入黑名单的常见原因

  • 您的主题中有表情符号 - 这不是 100% 的原因,但服务器经常将此类电子邮件标记为垃圾邮件,尤其是在其他领域(如from

不幸的是,正如我所说,没有一个真正的原因,可能有很多。 我希望这至少有一点帮助:)

请删除 👥 并尝试重新发送。 我曾经在一篇文章中读到电子邮件客户端不喜欢这些图标,因为很多垃圾邮件发送者都在使用它们。

尝试将其发送到多个 Gmail 帐户。 除此之外,代码没有任何问题。 如果您在共享主机或本地主机上,它也可能进入垃圾文件夹。 在这种情况下,您将不得不考虑从不同的 IP 发送电子邮件,首选在您将电子邮件发送到的国家/地区。

但首先尝试删除该图标!

附注。 我会把这个答案作为评论,但我不能因为低代表。

在我的情况下,我需要指定表单, from 需要是 = to user mail

auth: {
  user: "xxx@yyy.com",
  pass: "password",
      }, 
from: xxx@yyy.com, 

晚会迟到..

尝试在您的 emailConfig 中同时添加 HTML 和文本版本,如下所示。 这样电子邮件就会出现在收件箱中。 它对我有用。

var emailOptions = {
from: 'cxxxxxkxxxxx@xxxxx.com',
to: 'xxxx@xxxxxx.com',
cc:'sxxxxxxsh@xxxx.com, xxxa@xxx.com, aaaxxxx@xxxx.com',
    bcc:'xxxxx.wrxxxk@xxxx.com',
    subject: 'xxxxxxxxxx',
    /* Adding HTML and Text Version, so the email will not land up in the Spam folder */
    html: 'Hello Team! <br><br>Please find attached...<br><br>Thanks,<br>XXXXX',
    text: 'Hello Team! <br><br>Please find attached...<br><br>Thanks,<br>XXXXX',
    attachments: [{
        // file on disk as an attachment, concatenating the file extension separately since NODE is not renaming the file properly with fs.renameSync
        filename: finalFileNameWithoutExt + '.xlsx',
        path: reportsLocationPathWithYearMonth + finalFileNameWithoutExt + '.xlsx' // stream this file
    }]
};

对于那些仍在为这个问题而苦苦挣扎的人。 我建议如下。

  1. 确保您和fromauth.user匹配的字段
  let transporter = nodemailer.createTransport({
    host: "smtp-mail.outlook.com",
    secureConnection: false,
    port: 587,
    tls: {
      ciphers: "SSLv3",
    },
    auth: {
      user: <YOUR_EMAIL_ACCOUNT>,
      pass: <YOUR_EMAIL_PASSWORD>,
    },
    from: <YOUR_EMAIL_ACCOUNT>,
  });
  1. options负载中添加描述您对 email 的意图的text字段
  const mailOptions = {
    from: `myCompany <mycompanyemail@gmail.com>`,
    to: "recipient@gmail.com",
    subject: "[MYCOMPANY] YOUR EMAIL VERIFICATION",
    text: "Hello. This email is for your email verification.",
    html: <h1>Hello</h1>,
  };
  1. 如果#1 或#2 不能解决您的问题。 尝试使用测试邮件并将 email 发送到他们提供的测试 email 地址。 它会告诉你你的漏洞在哪里,尤其是你必须设置SPFDKIMDMARC.

  2. 如果您使用自定义域设置 SPF、DKIM、DMARC,请遵循本文

HTML 变成垃圾,纯文本不会

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM