通过 nodemailer 发送电子邮件不起作用
sending email via nodemailer not working
我有一段简单的代码没有按预期工作。我正在使用 nodemailer。
var nodemailer = require('nodemailer');
var smtpTransport = nodemailer.createTransport('SMTP', {
service: 'Gmail',
auth: {
user: 'personal gmail address',
pass: 'password'
}
});
var mailOptions = {
from: 'personal gmail address',
to: 'personal gmail address',
subject: 'Hello world!',
text: 'Plaintext message example.'
};
smtpTransport.sendMail(mailOptions, function(err) {
console.log('Message sent!');
});
我在控制台收到消息发送。但是收件箱里没有邮件。
对于 gmail 服务,我使用这个:
const smtpTransport = require('nodemailer-smtp-transport')
const nodemailer = require('nodemailer')
const transport = nodemailer.createTransport(smtpTransport({
service: 'gmail',
auth: {
user: 'email',
pass: 'pass'
}
}))
但是您需要在您的 gmail 帐户上允许不太安全的身份验证,否则将不会发送电子邮件。
我认为步骤是:
- 转到:https://www.google.com/settings/security/lesssecureapps
- 将安全性较低的应用程序的访问权限设置为启用
你能检查一下错误信息吗?
...
smtpTransport.sendMail(mailOptions, function(err) {
if(err)
{
console.log(err);
}
else
{
console.log('Message sent!');
}
});
因为在您的示例代码中,即使 nodemailer returns 有效错误,它仍然会打印 Message Sent
有时邮件可能会排队或在 mailOptions 中说出任何类型的错误,无法传递邮件。
找到这个 SO:self signed certificate in certificate chain error in mail。
我需要添加这个,它对我有用。
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'myemail@gmail.com',
pass: 'password'
},
tls: {
rejectUnauthorized: false
}
});
我有一段简单的代码没有按预期工作。我正在使用 nodemailer。
var nodemailer = require('nodemailer');
var smtpTransport = nodemailer.createTransport('SMTP', {
service: 'Gmail',
auth: {
user: 'personal gmail address',
pass: 'password'
}
});
var mailOptions = {
from: 'personal gmail address',
to: 'personal gmail address',
subject: 'Hello world!',
text: 'Plaintext message example.'
};
smtpTransport.sendMail(mailOptions, function(err) {
console.log('Message sent!');
});
我在控制台收到消息发送。但是收件箱里没有邮件。
对于 gmail 服务,我使用这个:
const smtpTransport = require('nodemailer-smtp-transport')
const nodemailer = require('nodemailer')
const transport = nodemailer.createTransport(smtpTransport({
service: 'gmail',
auth: {
user: 'email',
pass: 'pass'
}
}))
但是您需要在您的 gmail 帐户上允许不太安全的身份验证,否则将不会发送电子邮件。 我认为步骤是:
- 转到:https://www.google.com/settings/security/lesssecureapps
- 将安全性较低的应用程序的访问权限设置为启用
你能检查一下错误信息吗?
...
smtpTransport.sendMail(mailOptions, function(err) {
if(err)
{
console.log(err);
}
else
{
console.log('Message sent!');
}
});
因为在您的示例代码中,即使 nodemailer returns 有效错误,它仍然会打印 Message Sent
有时邮件可能会排队或在 mailOptions 中说出任何类型的错误,无法传递邮件。
找到这个 SO:self signed certificate in certificate chain error in mail。 我需要添加这个,它对我有用。
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'myemail@gmail.com',
pass: 'password'
},
tls: {
rejectUnauthorized: false
}
});