成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

程序員: 如何使用nodejs自動發送郵件?

開發 前端
之前用Nodejs做了很多服務端模塊, 最近抽空復盤一下, 接下來筆者將介紹如何使用Nodejs來自動向用戶發送郵件.

[[382040]]

之前用Nodejs做了很多服務端模塊, 最近抽空復盤一下, 接下來筆者將介紹如何使用Nodejs來自動向用戶發送郵件.

筆者將詳細介紹自動發送郵箱的實現方案, 以及通過一個實際的案例來帶大家掌握使用nodejs自動發送郵件, 最后會介紹一些實際的應用場景, 來加深對該方案的理解, 達到學以致用的目的.

實現方案

實現自動發送郵件筆者采用了基于Nodejs生態的nodemailer, 它可以輕松的幫我們發送電子郵件, 官網地址: nodemailer.


之所以選擇nodemailer是因為它提供了非常靈活的自定義配置和安全保障, 比如:

  • 具有零依賴關系的單一模塊, 代碼容易審核,沒有死角
  • Unicode支持使用任何字符,包括表情符號💪
  • 郵件內容既支持普通文本, 還支持自定義html
  • 支持自定義附件
  • 支持安全可靠的SSL/STARTTLS郵件發送
  • 支持自定義插件處理郵件消息

還有很多特點筆者就不一一介紹了. 接下來我們來看一個筆者簡化并翻譯的官網案例:

  1. "use strict"
  2. const nodemailer = require("nodemailer"); 
  3.  
  4. // 使用async..await 創建執行函數 
  5. async function main() { 
  6.   // 如果你沒有一個真實郵箱的話可以使用該方法創建一個測試郵箱 
  7.   let testAccount = await nodemailer.createTestAccount(); 
  8.  
  9.   // 創建Nodemailer傳輸器 SMTP 或者 其他 運輸機制 
  10.   let transporter = nodemailer.createTransport({ 
  11.     host: "smtp.ethereal.email", // 第三方郵箱的主機地址 
  12.     port: 587, 
  13.     secure: false, // true for 465, false for other ports 
  14.     auth: { 
  15.       user: testAccount.user, // 發送方郵箱的賬號 
  16.       pass: testAccount.pass, // 郵箱授權密碼 
  17.     }, 
  18.   }); 
  19.  
  20.   // 定義transport對象并發送郵件 
  21.   let info = await transporter.sendMail({ 
  22.     from'"Dooring 👻" <dooring2021@163.com>', // 發送方郵箱的賬號 
  23.     to"bar@example.com, baz@example.com", // 郵箱接受者的賬號 
  24.     subject: "Hello Dooring", // Subject line 
  25.     text: "H5-Dooring?", // 文本內容 
  26.     html: "歡迎注冊h5.dooring.cn, 您的郵箱驗證碼是:<b>${emailCode}</b>", // html 內容, 如果設置了html內容, 將忽略text內容 
  27.   }); 
  28.  
  29. main().catch(console.error); 

以上代碼是發送帶有純文本和HTML正文的電子郵件的完整示例. 筆者在代碼上做了詳細的翻譯, 我們可以總結出要想發送郵件, 我們需要如下3個步驟:

  • 創建Nodemailer傳輸器 SMTP 或者其他運輸機制
  • 設置 Message 選項(將什么消息發送給誰)
  • 使用先前創建的傳輸器的sendMail()方法傳遞消息對象

宏觀的使用流程我們知道了, 接下來我們落實到每一個技術功能點來實現.我們需要關注如下幾個核心點:

  • 如何設置 host
  • 如何設置 auth
  • 如何配置 Message 選項

解答了以上3個問題, 我們就能靈活的使用Nodemailer發送自定義郵件了.

如何設置host, port, secure

這里筆者拿網易郵箱來舉例. 比如我們想用我們自己的網易郵箱給用戶發送郵件, 我們需要先注冊一個用于發送郵件的網易郵箱, 比如dooring2021@163.com. 由于我們采用SMTP傳輸器 , 所以在郵箱主頁我們找到如下選項并設置:


在該頁面下方我們可以找到對應的host, 如下:


關于port和secure, 我們采用默認配置即可, 設置secure為true,表示端口默認使用465. 詳細配置如下:


如何設置auth

auth我們在上一步的操作中已經涉及到了, 我們在開啟IMAP/SMTP服務時會提示保存郵箱授權碼, 這里的授權碼就是auth.pass的值, auth.user表示當前授權的郵箱.

如何設置Message

消息配置是我們郵箱服務比較重要的部分, 官方提供了如下幾個配置說明:


這里筆者給大家詳細介紹一下:

  • from 發件人的電子郵件地址。所有電子郵件地址都可以是純'sender@server.com“或格式化”‘發送者名稱’sender@server.com'
  • to 逗號分隔的列表或收件人的電子郵件地址的排列
  • cc 逗號分隔的列表或將顯示在“抄送”字段中的收件人電子郵件地址數組
  • bcc 逗號分隔的列表或將顯示在“密件抄送:”字段中的收件人電子郵件地址數組
  • subject 電子郵件的主題
  • text 消息的文本內容
  • html 消息的html內容, 如果定義了html, 將忽略text
  • attachments 附件內容

熟悉了以上配置之后我們基本可以配置滿足80%場景的郵件發送需求了. 這里我們來看一個設置Message的簡單案例:

  1. await transporter.sendMail({ 
  2.   from'"v6.dooring" <dooring2021@163.com>', // sender address 
  3.   to'xujiang156@qq.com', // list of receivers 
  4.   subject: 'welcome to use dooring', // Subject line 
  5.   text: 'Hello world?', // plain text body 
  6.   html: `歡迎注冊v6.dooring, 您的郵箱驗證碼是:<b>${emailCode}</b>`, // html body 
  7. }) 

該案例是使用dooring郵箱給一個普通用戶發送郵箱驗證碼的場景, 是不是很熟悉呢? 這個場景目前被應用在很多登錄注冊相關的場景中. 接下來看看實際的效果:


擴展

我們利用Nodemailer可以開發很多有意思的產品, 比如:

  • 在線郵箱客戶端
  • 定制郵箱模版
  • 郵箱驗證中樞系統
  • 郵箱群發助手

等等. 關于第二個應用場景, 目前開源有很多漂亮的郵箱模版, 比如

  • Foundation for Emails
  • emailframe http://emailframe.work
  • MJML https://mjml.io

最后

目前筆者也在持續更新H5編輯器 H5-Dooring, 近期更新如下:

  • 修復圖片庫選擇bug
  • 添加省市級聯組件
  • 添加批量導入 excel 數據的能力
  • 添加表單自定義校驗
  • 音頻組件添加自動播放控制, 循環播放等配置項
  • 添加橫向滑動組件

 

責任編輯:姜華 來源: 趣談前端
相關推薦

2021-07-30 16:34:31

前端Nodejs開發

2023-12-06 11:10:08

2021-06-11 06:54:34

程序郵件Django

2010-10-18 11:18:44

程序員

2014-09-22 09:42:54

程序員

2014-03-04 09:43:23

程序員外包

2016-04-28 11:17:33

互動出版網

2020-04-04 20:59:28

程序員技術開發

2015-04-09 13:36:13

程序員大齡程序員出路

2012-03-06 09:22:46

程序員

2013-08-20 09:33:59

程序員

2015-02-28 09:35:01

iOSpython

2009-05-21 15:58:12

程序員工作經驗職場

2015-07-28 09:19:02

2017-12-19 20:35:22

程序員中興事件自殺

2020-03-02 15:15:37

程序員工資協議

2009-03-20 10:06:21

程序員PHP職場

2012-11-01 13:46:54

程序員

2014-12-01 10:05:25

程序員

2015-10-12 08:53:49

程序員壓力
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕一区二区三区精彩视频 | 97伦理电影网 | 国产中文字幕在线 | 精品无码久久久久久国产 | 成人1区2区 | 国产成人99久久亚洲综合精品 | 日本不卡一二三 | 久久综合一区 | 九色网址 | 一级毛片成人免费看a | 一区二区三区四区在线播放 | 成人精品免费视频 | 这里只有精品999 | 亚洲精品久久久久久一区二区 | 中文字幕一区在线观看视频 | 欧美xxxx色视频在线观看免费 | 黑人巨大精品欧美一区二区免费 | 亚洲 精品 综合 精品 自拍 | 高清一区二区 | 九九热精 | 不卡视频一区二区三区 | 日韩中文一区 | 国产无套一区二区三区久久 | 国产精品99久| 性高湖久久久久久久久3小时 | 亚洲一区二区三区四区五区午夜 | 色婷婷一区二区三区四区 | 国产伦精品一区二区三区照片91 | 狠狠色网| 日韩午夜精品 | 毛片在线看片 | 日韩精品一区二区三区高清免费 | 国产精品久久久久久久免费大片 | 一区二区在线看 | www.国产.com| 亚洲 自拍 另类 欧美 丝袜 | 国产激情 | 福利精品 | 精品一区二区三区在线观看国产 | 91电影在线| 欧美日韩淫片 |