2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

Node.js 邮件发送组件 - Nodemailer 1.0 发布

  • 2014-07-20
  • 本文字数:995 字

    阅读完需:约 3 分钟

Nodemailer 是一个简单易用的 Node.js 邮件发送组件(通过 SMTP、sendmail 或者 Amazon SES 实现邮件发送),且支持 Unicode 编码。近日,Nodemailer 1.0 发布,此版本包括许多新特性,稳定性也得到了提高,第一次不支持向后兼容。该版本对整个代码进行了重构,降低了代码复杂度,使代码更加简单,更加易于维护。该版本还新增了一个简单的插件 API。

Nodemailer 的主要特点包括:

  • 支持 Unicode 编码
  • 支持 HTML 内容和普通文本内容
  • HTML 内容中可以嵌入图片
  • 使用 SSL/STARTTLS 实现安全的邮件发送
  • 支持内置的 transport 方法和其他插件实现的 transport 方法
  • 自定义插件处理消息
  • 支持 XOAUTH2 登录验证

Nodemailer 0.x 系列版本包括许多开发者不需要的功能,为了降低 Nodemailer 的代码复杂度和提高可维护性,Nodemailer 1.0 把这些可选的功能代码移出核心代码库,并以插件的形式提供相应功能,如 nodemailer-markdown 插件,在构建模板时需要使用该插件,它使开发者能够使用标记代替 html 内容或者普通文本。

在 Nodemailer 1.0 中,使用新代码重写了一些模块,并从 emailjs.org 邮件处理组件的代码中,借鉴了许多代码。该版本还规范化了一些 API,如使用 filename 代替 fileName。同时还废除了一些功能,如废除了 generateTextFromHTML 方法。

Nodemailer 1.0 基于 new Node streaming API (Streams2)实现发送邮件,所以性能上有了很大的提高,使开发者能够实现 G 量级的附件发送,且在短时间内能够发送数千万封邮件。

根据新新增的插件 API 要求,所有的插件都必须接收两个参数,第一个是邮件对象,第二个是回调函数,邮件对象包括两个属性:data 和 message。

Nodemailer 1.0 以后的版本将会根据语义化版本控制规范制定,新功能和向后不兼容的变化将会放到主版本中,bug 的修复将会放到补丁版本中。

请开发者注意,如果您正在使用Nodemailer 0.7 或者更低的版本,建议不要升级。如果真有升级需要,请参考0.7 版本升级到1.0 版本的升级指南。另外,Nodemailer 是Node.js 邮件发送模块, Node.js 是一个可用来快速构建网络服务及应用的平台,它对 Google V8 引擎进行了封装。有关 Nodemailer 更多详细内容请查看发行说明,登录GitHub下载 Nodemailer。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-07-20 23:462537
用户头像

发布了 92 篇内容, 共 51.8 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

如何在 Linux 上重新启动网络接口?

wljslmz

Linux 网络 网络接口 10月月更

Apache RocketMQ 在阿里云大规模商业化实践之路

阿里巴巴云原生

Apache 阿里云 云原生 消息队列 商业化

行业实践:RocketMQ 业务集成典型行业应用和实践

阿里巴巴云原生

阿里云 RocketMQ 云原生

协同开发时,如何科学的使用Git紧急修复线上bug?

王中阳Go

git 敏捷开发 团队协作 10月月更 git使用规范

Go-Excelize API源码阅读(二十三)——SetDocProps、GetDocProps

Regan Yue

Go 开源 源码刨析 10月月更

浅谈etcd服务注册与发现

闫同学

Go 微服务 etcd 10月月更

Linux下编写ENC28J60网卡驱动,完善网络设备框架

DS小龙哥

10月月更

朋友圈高性能复杂度分析

许四多

图解ReentrantLock的条件变量Condition机制

JAVA旭阳

Java 并发 10月月更

Kafka的客户端NetworkClient如何发起的请求

石臻臻的杂货铺

Kafk 10月月更

WeChat Moments Performance Analysis

David

架构实战营

【愚公系列】2022年10月 Go教学课程 029-面向对象简介

愚公搬代码

10月月更

Vue组件入门(六)派发事件的参数传递

Augus

Vue 3 10月月更

Serverless的应用场景

阿泽🧸

Serverless 10月月更

一文搞懂常见的网络I/O模型

闫同学

网络 网络io 10月月更

super关键字的作用

魏铁锤

10月月更

「趣学前端」容器上的折角边框是图形吗?

叶一一

CSS 前端 10月月更

Go语言开发小技巧&易错点100例(一)

闫同学

10月月更

JavaSE 抽象类和接口

whispar

接口 Java应用 10月月更

用Java实现计算器功能

魏铁锤

10月月更

如何提高项目的稳定性和开发效率呢?

王中阳Go

数据库 算法 框架 函数 10月月更

前端开发提效小技巧之业务功能篇

叶一一

前端 提高效率 10月月更

一文搞懂Go整合captcha实现验证码功能

闫同学

Go Web 安全 10月月更

搭建Linux下QT开发环境与Android开发环境(嵌入式与PC机)

DS小龙哥

10月月更

百度面试题——迷宫问题(超详细解析)

lovevivi

c 数据结构 10月月更

「趣学前端」box-shadow的多重用法

叶一一

CSS 前端 10月月更

常见大数据应用场景

穿过生命散发芬芳

大数据 10月月更

JWT详解

Java学术趴

10月月更

Spring Boot「06」Loading initial data

Samson

Java spring 学习笔记 spring-boot 10月月更

ReentrantLock可重入、可打断、锁超时实现原理

JAVA旭阳

Java 并发 10月月更

用栈操作构建数组

掘金安东尼

算法 10月月更

Node.js邮件发送组件- Nodemailer 1.0发布_架构/框架_李士窑_InfoQ精选文章