Node.js 使用 NodeMailer 发送邮件实例代码

作者:接口漫谈

时间:2026-10-21

浏览:410

本文详细介绍如何在 Node.js 环境中使用 NodeMailer 库实现邮件发送功能。内容涵盖 Express 部署、邮箱 SMTP 服务开启、nodemailer 安装与配置,以及包含附件和 HTML 正文的完整代码示例,并提供测试验证方法。

文章目录

Node.js 使用 NodeMailer 发送邮件实例代码

0.目标

本节旨在实现一个基础的邮件发送功能。

环境部署与前置准备

1.部署

1.1 部署Express

若尚未完成 Express 环境的搭建,请参考相关的部署指南进行操作。

1.2 准备一个邮箱并开始SMTP服务

执行此功能的前提是拥有一个有效的邮箱账号,且该账号必须开启 SMTP 服务以支持协议发送。以新浪邮箱和 QQ 邮箱为例,用户需登录邮箱后台并在设置中开启相应功能。

Node.js 使用 NodeMailer 发送邮件实例代码

Node.js 使用 NodeMailer 发送邮件实例代码

服务器端配置与实现

2.服务器端

2.1 使用nodemailer

项目需引入 nodemailer 库,请通过命令行工具自行安装该依赖。


npm install nodemailer --save

在 routes/index.js 文件中引用 nodemailer 模块。


var multer = require('nodemailer');

2.2 配置

在 routes/index.js 中定义传输对象(transport)。


var mailTransport = nodemailer.createTransport({
  host : 'smtp.sina.com',
  secureConnection: true, // 使用SSL方式(安全方式,防止被窃取信息)
  auth : {
    user : '你的邮箱地址',
    pass : '你的邮箱密码'
  },
});

需要注意的是,旧版本的 nodemailer 在创建传输对象时可能需要额外传入 'SMTP' 参数作为标识。


var mailTransport = nodemailer.createTransport('SMTP', {
  host : 'smtp.sina.com',
  secureConnection: true, // use SSL
  auth : {
    user : '你的邮箱地址',
    pass : '你的邮箱密码'
  },
});

2.3 发送邮件


/* 浏览器输入地址(如127.0.0.1:3000/sned)后即发送 */
router.get('/send', function(req, res, next) {
  var options = {
    from      : '"你的名字" <你的邮箱地址>',
    to       : '"用户1" <邮箱地址1>, "用户2" <邮箱地址2>',
    // cc     : ''  //抄送
    // bcc     : ''  //密送
    subject    : '一封来自Node Mailer的邮件',
    text      : '一封来自Node Mailer的邮件',
    html      : '<h1>你好,这是一封来自NodeMailer的邮件!</h1><p><img src="cid:00000001"/></p>',
    attachments  : 
          [
            {
              filename: 'img1.png',      // 改成你的附件名
              path: 'public/images/img1.png', // 改成你的附件路径
              cid : '00000001'         // cid可被邮件使用
            },
            {
              filename: 'img2.png',      // 改成你的附件名
              path: 'public/images/img2.png', // 改成你的附件路径
              cid : '00000002'         // cid可被邮件使用
            },
          ]
  };

  mailTransport.sendMail(options, function(err, msg){
    if(err){
      console.log(err);
      res.render('index', { title: err });
    }
    else {
      console.log(msg);
      res.render('index', { title: "已接收:"+msg.accepted});
    }
  });
});

若需发送附件,请确保相关文件已存放于工程目录中,并相应调整代码里的 filename 和 path 参数。

根据代码逻辑,若要在邮件正文中嵌入图片,需设置图片的 cid 属性,并在 img 标签的 src 属性中引用该 cid。

建议避免在 JavaScript 代码中直接嵌入大量 HTML 代码,同时也建议不要将图片直接添加到邮件正文中,以免影响兼容性或性能。

功能测试与验证

3.测试

在浏览器地址栏输入访问地址(例如 127.0.0.1:3000/sned)以触发发送请求。

发送耗时取决于附件大小及网络带宽,若包含大附件可能导致等待时间较长,因此测试阶段建议使用小文件。

若发送成功,系统将返回成功提示。

Node.js 使用 NodeMailer 发送邮件实例代码

同时,目标邮箱将收到对应的邮件内容。

Node.js 使用 NodeMailer 发送邮件实例代码

以上为本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章