[英]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
}]
};
對於那些仍在為這個問題而苦苦掙扎的人。 我建議如下。
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>,
});
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>,
};
HTML 變成垃圾,純文本不會
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.