我正在尝试使用nodemailer发送gmail。 这是我的代码。
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: '<sender@gmail.com>',
pass: '<password>'
}
});
var mailOptions = {
from: '<sender@gmail.com>',
to: '<receiver@gmail.com>',
subject: 'Sending Email using Node.js',
text: 'That was easy!'
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
但是我总是遇到这个错误。
{ Error: Connection timeout
at SMTPConnection._formatError (E:\Work\Web\GatherSense\gather-sense-backend\node_modules\nodemailer\lib\smtp-connection\index.js:771:19)
at SMTPConnection._onError (E:\Work\Web\GatherSense\gather-sense-backend\node_modules\nodemailer\lib\smtp-connection\index.js:757:20)
at Timeout._connectionTimeout.setTimeout (E:\Work\Web\GatherSense\gather-sense-backend\node_modules\nodemailer\lib\smtp-connection\index.js:229:22)
at ontimeout (timers.js:436:11)
at tryOnTimeout (timers.js:300:5)
at listOnTimeout (timers.js:263:5)
at Timer.processTimers (timers.js:223:10) code: 'ETIMEDOUT', command: 'CONN' }
我花了很多时间,并以许多方式进行了尝试,例如允许减少安全性的应用程序和关闭防火墙。 但是总是会得到同样的错误。请帮助我,谢谢。
答案 0 :(得分:0)
const nodemailer = require('nodemailer');
const smtpTransport = require('nodemailer-smtp-transport');
import config from '../config/environment';
const transporter = nodemailer.createTransport(smtpTransport({
host: config.email_config.SMTP_HOST,
port: config.email_config.SMTP_PORT,
tls: {
rejectUnauthorized: false
},
auth: {
user: config.email_config.SMTP_AUTH_USER,
pass: config.email_config.SMTP_AUTH_PASS
}
}));
export function mail(emailObj) {
return new Promise((resolve, reject) => {
transporter.sendMail(emailObj)
.then(success => {
if (success) {
console.log("Email success:::", success);
resolve();
} else {
resolve(null);
}
}).catch(err => {
console.log("Email Error:::", err);
reject(err)
})
})
}