以前用Nodejs
作了不少服務端模塊, 最近抽空覆盤一下, 接下來筆者將介紹如何使用Nodejs
來自動向用戶發送郵件.javascript
筆者將詳細介紹自動發送郵箱的實現方案, 以及經過一個實際的案例來帶你們掌握使用nodejs自動發送郵件, 最後會介紹一些實際的應用場景, 來加深對該方案的理解, 達到學以至用的目的.css
實現自動發送郵件筆者採用了基於Nodejs
生態的nodemailer
, 它能夠輕鬆的幫咱們發送電子郵件, 官網地址: nodemailer.html
之因此選擇nodemailer
是由於它提供了很是靈活的自定義配置和安全保障, 好比:前端
Unicode
支持使用任何字符,包括表情符號💪html
SSL/STARTTLS
郵件發送還有不少特色筆者就不一一介紹了. 接下來咱們來看一個筆者簡化並翻譯的官網案例:java
"use strict";
const nodemailer = require("nodemailer");
// 使用async..await 建立執行函數
async function main() {
// 若是你沒有一個真實郵箱的話可使用該方法建立一個測試郵箱
let testAccount = await nodemailer.createTestAccount();
// 建立Nodemailer傳輸器 SMTP 或者 其餘 運輸機制
let transporter = nodemailer.createTransport({
host: "smtp.ethereal.email", // 第三方郵箱的主機地址
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: testAccount.user, // 發送方郵箱的帳號
pass: testAccount.pass, // 郵箱受權密碼
},
});
// 定義transport對象併發送郵件
let info = await transporter.sendMail({
from: '"Dooring 👻" <dooring2021@163.com>', // 發送方郵箱的帳號
to: "bar@example.com, baz@example.com", // 郵箱接受者的帳號
subject: "Hello Dooring", // Subject line
text: "H5-Dooring?", // 文本內容
html: "歡迎註冊h5.dooring.cn, 您的郵箱驗證碼是:<b>${emailCode}</b>", // html 內容, 若是設置了html內容, 將忽略text內容
});
}
main().catch(console.error);
複製代碼
以上代碼是發送帶有純文本和HTML
正文的電子郵件的完整示例. 筆者在代碼上作了詳細的翻譯, 咱們能夠總結出要想發送郵件, 咱們須要以下3個步驟:node
Nodemailer
傳輸器 SMTP
或者其餘運輸機制Message
選項(將什麼消息發送給誰)sendMail()
方法傳遞消息對象宏觀的使用流程咱們知道了, 接下來咱們落實到每個技術功能點來實現.咱們須要關注以下幾個核心點:webpack
host
auth
Message
選項解答了以上3個問題, 咱們就能靈活的使用Nodemailer
發送自定義郵件了.css3
這裏筆者拿網易郵箱來舉例. 好比咱們想用咱們本身的網易郵箱給用戶發送郵件, 咱們須要先註冊一個用於發送郵件的網易郵箱, 好比dooring2021@163.com
. 因爲咱們採用SMTP
傳輸器 , 因此在郵箱主頁咱們找到以下選項並設置:git
在該頁面下方咱們能夠找到對應的host
, 以下:github
關於port和secure, 咱們採用默認配置便可, 設置secure
爲true
,表示端口默認使用465
. 詳細配置以下:
auth
咱們在上一步的操做中已經涉及到了, 咱們在開啓IMAP/SMTP
服務時會提示保存郵箱受權碼, 這裏的受權碼就是auth.pass
的值, auth.user
表示當前受權的郵箱.
消息配置是咱們郵箱服務比較重要的部分, 官方提供了以下幾個配置說明:
這裏筆者給你們詳細介紹一下:
熟悉了以上配置以後咱們基本能夠配置知足80%場景的郵件發送需求了. 這裏咱們來看一個設置Message
的簡單案例:
await transporter.sendMail({
from: '"v6.dooring" <dooring2021@163.com>', // sender address
to: 'xujiang156@qq.com', // list of receivers
subject: 'welcome to use dooring', // Subject line
text: 'Hello world?', // plain text body
html: `歡迎註冊v6.dooring, 您的郵箱驗證碼是:<b>${emailCode}</b>`, // html body
})
複製代碼
該案例是使用dooring
郵箱給一個普通用戶發送郵箱驗證碼的場景, 是否是很熟悉呢? 這個場景目前被應用在不少登陸註冊相關的場景中. 接下來看看實際的效果:
咱們利用Nodemailer
能夠開發不少有意思的產品, 好比:
等等. 關於第二個應用場景, 目前開源有不少漂亮的郵箱模版, 好比
目前筆者也在持續更新H5編輯器 H5-Dooring, 近期更新以下:
以爲有用 ?喜歡就收藏,順便點個贊吧,你的支持是我最大的鼓勵!微信搜 「趣談前端」,發現更多有趣的H5遊戲, webpack,node,gulp,css3,javascript,nodeJS,canvas數據可視化等前端知識和實戰.