Javascript nodeEmailer发送带有空正文的电子邮件
我正在使用nodemailer和npm包电子邮件模板。我没有收到电子邮件。当我设置预览:true时,模板正在工作。控制台上获取错误错误:未定义收件人。为什么会发生此错误?尝试了很多方法,但NodeEmailer每次都发送空邮件。希望你能理解我的问题 标题:Javascript nodeEmailer发送带有空正文的电子邮件,javascript,node.js,pug,nodemailer,Javascript,Node.js,Pug,Nodemailer,我正在使用nodemailer和npm包电子邮件模板。我没有收到电子邮件。当我设置预览:true时,模板正在工作。控制台上获取错误错误:未定义收件人。为什么会发生此错误?尝试了很多方法,但NodeEmailer每次都发送空邮件。希望你能理解我的问题 标题: from: testing@gmail.com to: my_email@gmail.com date: Jan 3, 2020, 3:23 PM subject: New password request mailed-by:
from: testing@gmail.com
to: my_email@gmail.com
date: Jan 3, 2020, 3:23 PM
subject: New password request
mailed-by: gmail.com
signed-by: gmail.com
security: Standard encryption (TLS) Learn more
错误:
Error: No recipients defined
at SMTPConnection._formatError (E:\testing\node_modules\nodemailer\lib\smtp-connection\index.js:784:19)
at SMTPConnection._setEnvelope (E:\testing\node_modules\nodemailer\lib\smtp-connection\index.js:995:34)
at SMTPConnection.send (E:\testing\node_modules\nodemailer\lib\smtp-connection\index.js:615:14)
at sendMessage (E:\testing\node_modules\nodemailer\lib\smtp-transport\index.js:227:28)
at E:\testing\node_modules\nodemailer\lib\smtp-transport\index.js:285:25
at SMTPConnection._actionAUTHComplete (E:\testing\node_modules\nodemailer\lib\smtp-connection\index.js:1537:9)
at SMTPConnection.<anonymous> (E:\testing\node_modules\nodemailer\lib\smtp-connection\index.js:550:26)
at SMTPConnection._processResponse (E:\testing\node_modules\nodemailer\lib\smtp-connection\index.js:942:20)
at SMTPConnection._onData (E:\testing\node_modules\nodemailer\lib\smtp-connection\index.js:749:14)
at TLSSocket.SMTPConnection._onSocketData (E:\testing\node_modules\nodemailer\lib\smtp-connection\index.js:195:44)
at TLSSocket.emit (events.js:210:5)
at addChunk (_stream_readable.js:309:12)
at readableAddChunk (_stream_readable.js:290:11)
at TLSSocket.Readable.push (_stream_readable.js:224:10)
at TLSWrap.onStreamRead (internal/stream_base_commons.js:182:23) {
code: 'EENVELOPE',
command: 'API'
}
带模板的节点邮件程序:
const nodemailer = require('nodemailer');
var generator = require('generate-password');
const Email = require('email-templates');
exports.sendNodeForgotPasswordMail = function (email, GeneratePassword) {
var transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 587,
secure: false,
auth: {
user: 'my_email',
pass: 'my_password'
},
tls: {
rejectUnauthorized: false
}
});
const emailVar = new Email({
message: {
from: 'testing@gmail.com'
},
preview: true,
send: true,
transport: {
jsonTransport: true
}
});
emailVar.send({
template: 'forget-password',
message: {
to: email
},
locals: {
password: GeneratePassword
}
}) .then(res => {
console.log('res.originalMessage', res.originalMessage)
}).catch(console.error);
return transporter.sendMail(emailVar, function (err, info) {
if (err)
console.log(err);
else
console.log(info);
});
};
Html.pug:
p Your new password is: #{password}
帕格
= `Password reset request`
看起来你的项目结构不太正确。每个要创建的模板都应该有一个目录,在每个目录中都应该有一个
subject.pug
文件、一个text.pug
文件(仅用于文本)和一个html.pug
文件(用于html)
文档中名为mars
的模板的示例目录结构如下所示:
.
├── app.js
└── emails
└── mars
├── html.pug
├── text.pug
└── subject.pug
对于调试,可以使用调试环境标志:
DEBUG=email-templates node app.js
您还可以通过以下方式查看来自emailVar.send()
的响应对象中的originalMessage
:
.
├── app.js
└── emails
└── mars
├── html.pug
├── text.pug
└── subject.pug
emailVar.send({
...
})
。然后(res=>{
console.log('res.originalMessage',res.originalMessage)
})
.catch(控制台错误);
您可以在此处看到更多高级配置:我强烈怀疑如果您想连接到gmail SMTP服务器,您需要
安全:true,
。@O.Jones我已经连接到gmail。当您尝试发送电子邮件时,控制台会打印什么?另外,您是否设置了调试环境变量?似乎未设置email
的值。你能把你收到的电子邮件发到你的收件箱里吗?关于标题(当然是擦洗过的),我在我的问题中添加了标题。有两件事:1)我希望看到更多来自电子邮件原件的标题(例如内容类型),2)标题“新密码请求”中列出的主题与subject.pug(“密码重设请求”)中的主题不同…您确定这些标题来自正确的电子邮件吗?3) 我刚刚注意到你的文件Html.pug
是大写的,我认为它需要全部小写。