首页 > 解决方案 > Node.js nodemailer 模块成功消息,但从未收到电子邮件

问题描述

我之前已经实施过几次nodemailer,但从未遇到过如此奇怪的问题。主要是信息说邮件已发送,但我从未收到。例如,这是我向邮件端点发出 API 请求时服务器的输出:

{ from: 'mail@gmail.com',
  to: 'my-personal-mail@gmail.com',
  subject: 'Your xx password',
  html:
   '<p>Hi, Name <br>, We received a request to reset your password. <br> Therefore your new password is: <stong>yiH5S0P43M</strong></p>' }
{ accepted: [ 'to-my-personal-mail@gmail.com' ],
  rejected: [],
  envelopeTime: 396,
  messageTime: 689,
  messageSize: 448,
  response: '250 2.0.0 OK  1571325863 25sm1485661lje.58 - gsmtp',
  envelope:
   { from: 'mail@gmail.com',
     to: [ 'my-personal-mail@gmail.com' ] },
  messageId: '<message-id-here@gmail.com>' }

所以基本上从回调信息消息看来一切都很好,错误消息也是空的,但消息没有通过。下面按照我的实际代码实现

var nodemailer = require('nodemailer');

var transporter = nodemailer.createTransport({
  service: "gmail",
  auth: {
    user: 'mymail@gmail.com',
    pass: 'mypassword'
  }
});

const mailOptions = {
from: 'mymail@gmail.com', // sender address
to: `${docs[0].email}`, // list of receivers
subject: 'Your password', // Subject line
html: `<p>Hi, ${docs[0].first_name} <br>, We received a request to reset your password. <br> Therefore your new password is: <stong>${new_password}</strong></p>`
};
 transporter.sendMail(mailOptions, function(err, info) {
 console.log(err, info)
 if (err)
 return res.status(500).send();
 else
 return res.status(200).send({
 status: 'OK',
 message: 'Success.',
  });
});

顺便说一句,我在我的 gmail 上启用了不太安全的应用程序,这不是我第一次实施 nodemailer,但这是我第一次遇到这个问题......

标签: javascriptnode.jsgmailnodemailer

解决方案


推荐阅读