通过nodemailer发送的电子邮件进入垃圾邮件以获取Gmail

Raj*_*sit 11 email gmail spam node.js nodemailer

我通过nodemailer发送电子邮件,如果我从本地服务器运行,它进入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    
  });    
});
Run Code Online (Sandbox Code Playgroud)

And*_*pov 13

事实上,没有简单的一行解决方案可以解决你的问题:)有很多原因导致这种情况发生,这里有一些:

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

  • 您的from字段与您允许使用的字段不同 - 因为我发现您使用的是smtp,因此您可以发送的邮件有严格的规则.当然你可以随时发送电子邮件mark@facebook.com,但由于你的SMTP主机不是 facebook.com,你的电子邮件肯定会被标记为垃圾邮件

  • 您可以在许多不同的邮件中签署您的电子邮件,确保服务器发送此电子邮件并且具有适当的签名.在线查看方法.

  • 在开发过程中,您发送了大量类似的电子邮件 - 发送相同的"测试"电子邮件是您的电子邮件被列入黑名单的常见原因

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


asl*_*sli 6

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

auth: {
  user: "xxx@yyy.com",
  pass: "password",
      }, 
from: xxx@yyy.com, 
Run Code Online (Sandbox Code Playgroud)


Arn*_*old 5

请摆脱掉,然后尝试再次发送。我曾在一篇文章中读到,电子邮件客户端不喜欢这些图标,因为许多垃圾邮件发送者正在使用它们。

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

但首先尝试删除该图标!

PS。我会将这个答案作为评论,但由于声望低而无法解决。

  • 我删除了但仍然有问题。但如果我从电子邮件中删除链接,那么它的工作。那么链接问题的解决方案是什么 (2认同)
  • 问题可能是它指向的域或&lt;a&gt;中的文本。尝试使用其他域,例如链接到google.com或其他内容。并使用文字“ google”尝试是否可行。 (2认同)

Hit*_*tit 5

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

  1. 确保添加from与匹配的字段auth.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>,
  });
Run Code Online (Sandbox Code Playgroud)
  1. 在负载中添加text描述您对电子邮件的意图的字段options
  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>,
  };
Run Code Online (Sandbox Code Playgroud)
  1. 如果#1 或#2 不能解决您的问题。尝试使用测试邮件程序并将电子邮件发送到他们提供的测试电子邮件地址。它将向您显示您的漏洞,特别是您必须设置的部分SPFDKIM以及DMARC.

  2. 如果您使用自定义域设置SPFDKIMDMARC按照本文操作。