簡體   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