在NodeJS中使用nodemailer来发送邮件的方法

403 阅读3分钟

照片:Brett JordanonUnsplash

作为一个后端开发者,我们都会遇到需要从服务器向客户端发送邮件的情况。在这篇文章中,我将向你展示如何在Node.js中使用nodemailer来实现。

一旦你掌握了这些知识,将你学到的东西应用到你的Express服务器上应该是小菜一碟。(剧透:只要把代码放在Express路线中的一个地方)

什么是nodemailer?

nodemailer是一个节点包,它使在Node中发送电子邮件变得更加容易。

首先,我们来谈谈协议

就像Web服务器遵循HTTP来通信信息一样,电子邮件通信也有协议。

  • SMTP,简单邮件传输协议,是一个在互联网上发送 电子邮件的准则集合。它是我们在本文中要使用的协议。
  • IMAP,互联网信息访问协议,是一套用于从服务器接收 电子邮件的准则。日期、发件人和主题最初从服务器下载,而内容只在用户打开邮件时下载。
  • POP3,邮局协议,是一套用于从服务器接收电子邮件的准则。3代表版本三,是这个标准中使用最广泛的版本。POP3以其对互联网连接的低依赖性而闻名。它将电子邮件从服务器传输到客户端,因此,即使我们没有连接到互联网,我们也可以阅读电子邮件。

如果你对更详细的比较感兴趣,请查看 IMAP vs POP3 vs SMTP - 最终比较.

实施

我发现nodemailer的实现是非常简单的。所以就直接看一下代码吧。

medium.com/media/9a4ff…

这并不可怕,对吗?

值得你注意的事情

Gmail提供了免费的SMTP服务,但也有不足之处

如果你有一个Gmail账户,你可以直接用这个账户来使用nodemailer。然而,这样做有几个缺点。

首先,外发邮件是有限制的。每天500封,每个收件人算作1封外发邮件。

第二,Gmail有一个更安全的认证。当你把你的代码推向生产时,生产服务器很可能不在你现在所在的地方。它可能在一百英里之外,或者在不同的国家。谷歌会检测到这种位置差异并阻止这种调用。因此,不建议在生产中使用Gmail。(反正我们可以用它来学习)。

在生产中,我们经常求助于提供邮件发送服务的公司,比如SendInBlueMailChimp

最后,你可能需要从google账户中心配置App Code,作为nodemailer的认证密码。否则,你很可能会看到错误信息。不接受用户名和密码

端口25、467、587、2525可以作为通信端点使用

然而,467端口已经过时了,25端口经常被云服务提供商和ISP封锁。

这给我们留下了端口587和2525。前者使用最广泛,而后者通常在587端口不可用时作为替代。

Nodemailer可以发送HTML格式的内容,日历邀请,附件,等等。