javascript - 使用 nodemailer 发送 gmail 但连接超时错误
问题描述
我正在尝试使用 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' }
我花了很多时间并尝试了多种方式,例如允许安全性较低的应用程序和关闭防火墙。但总是得到同样的错误。请帮助我,谢谢。
解决方案
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)
})
})
}
推荐阅读
- javascript - 更新数组中对象的值
- python - 如何仅设置 pandas 数据框的最后一行?
- flutter - 如何在 Flutter 中创建具有固定列的水平滚动表格?
- git - 针对 master 与针对当前分支的 rebase?
- javascript - 电子邮件正文修改(Outlook 插件)
- java - 我们如何从firebase下载android studio中的文件(pdf),使其不会出现在手机的内部存储中?
- typescript - 带有 TypeScript 的 GatsbyJS:在布局中获取页面上下文?
- apache - 将 csv 文件加载到 Apache Phoenix 表并记录无效数据行
- mysql - ERROR 1265 (01000): 第 1 行的列 ' ' 的数据被截断
- python - _mysql_exceptions.ProgrammingError - 如何处理?