【发布时间】:2019-10-06 20:00:54
【问题描述】:
我正在尝试使用 nodemailer 发送邮件,但代码没有发送邮件,也没有显示任何错误。通过用户输入添加到主题、来自 ejs 表单的消息并使用 nodemailer 我想将邮件发送到 Gmail 帐户,但它没有发送。请任何帮助
mail.ejs
<div class="card">
<div class="card-header">
<p>
<b>Send mail</b>
</p>
</div>
<br/>
<form action="/send-email" method="post">
<div class="col-md-12" style="overflow-x:auto;">
<div class="form-group">
<input type="text" class="form-control" placeholder="To" name="to" value="">
</div>
<div class="form-group">
<input type="text" class="form-control" placeholder="From" name="from" value="">
</div>
<div class="form-group">
<input type="text" class="form-control" placeholder="Subject" name="message" value="">
</div>
<div class="form-group">
<textarea class="form-control" id="" rows="4"></textarea>
</div>
<button type="submit" class="btn btn-primary">Send</button>
</div>
</form>
<br/>
<br/>
</div>
Controller.js
router.get('/donation/mail', async (req,res) => {
res.render('mail');
});
var transport = nodemailer.createTransport(smtpTransport({
service: "gmail",
auth: {
// should be replaced with real sender's account
user: 'xxxxx@gmail.com',
pass: 'mygmailpassword'
}
}));
router.post('/send-email', function (req, res) {
var mailOptions = {
// should be replaced with real recipient's account
to: req.body.to,
from:'xxxxx@gmail.com',
subject: req.body.subject,
body: req.body.message
};
transport.sendMail(mailOptions, function(error, info) {
if (error) {
return console.log(error);
}
console.log('Message sent: ' + info.response);
});
res.redirect("/donation");
});
运行后得到消息 enter image description here
我的邮件表格 [在此处输入图片描述][2]
【问题讨论】:
-
欢迎来到 SO!感谢您充分提出您的第一个问题。您可以改进:除非必要,否则不要使用图像。
POST /send-email 302 195.545ms 62非常适合文本。 -
302 出现在哪里 - 在浏览器中,还是在终端控制台日志中?邮件真的发送了吗?从
transport.sendMaiil调用中获取 302 是没有意义的,也许 302 是res.redirect的结果(与您示例中侦听器中的 url 不匹配
标签: node.js nodemailer