用文字记录生活,留下美好瞬间
原创

使用nodemailer发送邮件

共 3,099 字,需阅读 8 分钟
2019/08/07 上午
537 次阅读

#环境准备

首先,确保你的开发环境中已安装Node.js。

如果没有安装Node.js,你可以看我的这篇文章 使用CLI脚手架搭建Vue项目的安装Node.js部分 ,或者看这篇文章 nvm管理node环境

接下来,在你的项目目录下初始化一个新的Node.js项目并安装Nodemailer:

nodemailer是一个Node.js模块,它提供了非常灵活的自定义配置帮助我们轻松发送邮件。 官网地址

官网地址
官网地址
          
  • 1
  • 2
  • 3
  • 4
mkdir nodemailer-example cd nodemailer-example npm init -y npm install nodemailer

#发送邮件基础

#最简单的示例

让我们从一个最基础的例子开始,发送一封简单的文本邮件。

          
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
const nodemailer = require('nodemailer'); // 创建一个SMTP传输器 const transporter = nodemailer.createTransport({ host: 'smtp.example.com', // SMTP服务器地址 port: 587, // SMTP服务器端口 secure: false, // 是否使用SSL,对于非465端口通常为false auth: { user: 'your-email@example.com', pass: 'your-password' } }); // 邮件内容配置 const mailOptions = { from: '"Fred Foo 👻" <from@example.com>', // 发件人 to: 'to@example.com', // 收件人 subject: 'Hello ✔', // 主题 text: 'Hello world?', // 纯文本内容 html: '<b>Hello world?</b>' // HTML内容 }; // 发送邮件 transporter.sendMail(mailOptions, (error, info) => { if (error) { return console.log(error); } console.log('Message sent: %s', info.messageId); // 如果需要,还可以用info对象做更多事情,比如获取邮件ID });

#如何设置host, port, secure

配置163邮箱服务器
配置163邮箱服务器
配置163邮箱认证密码
配置163邮箱认证密码

#使用环境变量保护敏感信息

在实际开发中,直接在代码中硬编码邮箱用户名和密码是不安全的。推荐的做法是使用环境变量存储这些敏感信息。

          
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
require('dotenv').config(); // 引入dotenv模块,用于加载环境变量 // ... const transporter = nodemailer.createTransport({ // ... auth: { user: process.env.EMAIL_USER, pass: process.env.EMAIL_PASS } });

确保在你的项目根目录创建一个.env文件,格式如下:

          
  • 1
  • 2
EMAIL_USER=your-email@example.com EMAIL_PASS=your-password

#高级功能探索

#发送附件

Nodemailer允许你轻松地添加附件到邮件中。

          
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
mailOptions.attachments = [ { // 二进制附件 filename: 'text.txt', content: Buffer.from('Some text here...'), }, { // 文件路径作为附件 filename: 'image.jpg', path: '/path/to/file/image.jpg' // 在本地文件系统中的路径 } ];

#使用模板引擎

为了动态生成邮件内容,可以结合模板引擎(如EJS、Pug或Handlebars)来渲染邮件HTML。

  1. 安装EJS模板引擎:npm install ejs

  2. 创建一个邮件模板,如emailTemplate.ejs:

              
    • 1
    • 2
    <h1>Welcome, <%= name %></h1> <p>Thank you for joining us!</p>
  3. 在Node.js中使用模板:

          
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
const ejs = require('ejs'); const fs = require('fs'); // 读取并渲染模板 fs.readFile('./emailTemplate.ejs', 'utf8', (err, data) => { if (err) throw err; const html = ejs.render(data, { name: 'John Doe' }); // 将渲染后的HTML设置为邮件内容 mailOptions.html = html; // 发送邮件... });

#总结

Nodemailer是一个强大且灵活的库,能够满足各种邮件发送需求。通过本文的介绍,你应该已经掌握了如何在Node.js应用中集成Nodemailer进行邮件发送的基础知识及一些进阶技巧。记得在实际应用中考虑安全性、性能优化以及用户体验,让邮件服务成为你应用的可靠一环。

自由转载 - 署名 - 非商业性使用
https://zhangwurui.cn/article/57
0/0条看法
访客身份
在下有一拙见,不知...
期待你的捷足先登