【问题标题】:verify if email is delivered successfully nodemailer (sails.js)验证电子邮件是否成功发送 nodemailer (sails.js)
【发布时间】:2015-12-28 16:36:29
【问题描述】:

我正在使用 nodemailer 模块在我的sails.js 项目中发送电子邮件。现在我想知道是否有一种方法可以让我知道电子邮件是否发送成功或电子邮件由于某些附件或可能是错误的电子邮件地址而以某种方式失败。

如何确定电子邮件地址是否有效?或者电子邮件是否已成功发送到相关电子邮件地址?

我已经阅读了 nodemailer 文档,并且还对其进行了一些研发,但到目前为止我还没有找到任何有成效的东西。

如果有办法确认电子邮件,请告诉我。

谢谢。

【问题讨论】:

  • 一般来说,您无法做到这一点,除非要求收件人点击链接。

标签: javascript sails.js email-client nodemailer


【解决方案1】:

这很简单。 sendMail 有一个回调作为参数。您只是检查此回调中是否存在某些错误。

transport.sendMail({}, (error, result) => {
  if (error) return console.error(error);
  return console.log(result);
});

或者您可以使用sails-service-mailer 包发送邮件 - https://github.com/ghaiklor/sails-service-mailer。然后你可以这样写你的代码

SmtpMailer
  .send({})
  .then(console.log.bind(console))
  .catch(console.error.bind(console));

如果你想检查游泳池或其他东西,那么我想是不可能的。如果您将邮件发送到它照常发送的不存在的电子邮件地址,则收件人不会收到。无论如何,您可以检查邮件是否仅添加到池中。

UPD: transport 也有一个 Promise API(参见 https://nodemailer.com/usage/),因此不再需要像我的 sails-service-mailer 这样的自定义包装器。

【讨论】:

  • 如何通过电子邮件发送电子邮件确认或密码重置?你能帮我在 Sails 中实现它吗?
  • 看来transport.sendMail也被一个Promise对象包裹了,如果你不给sendMail添加回调->根据these docs
  • 如果没有err,则表示邮件已发送。这并没有说明邮件是否已送达
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
  • 2015-05-19
  • 1970-01-01
  • 2021-08-06
相关资源
最近更新 更多