最近在作用戶註冊的功能,有這樣的需求:用戶填完信息點擊註冊後,服務器要發給用戶註冊郵箱一個激活連接來激活帳戶,後端用Node寫的,第一次作後端發送郵件的功能,折騰了半天,終於實現了,哈哈。html
關於Node生態下發送郵件的插件也有不少,我用的比較主流的Nodemailer
來作的。若是要用SMTP協議的話還要引入Nodemailer
的一個模塊nodemailer-smtp-transport
node
Nodemailer官網npm
首先新建一個文件夾,cd到這個文件夾後端
安裝 Nodemailer
和 nodemailer-smtp-transport
服務器
npm i nodemailer nodemailer-smtp-transport --save
框架
在文件根目錄下新建test.js
文件,結合官網給的的例子,咱們先搭建一個簡單的例子測試
//test.js const nodemailer = require('nodemailer') const smtpTransport = require('nodemailer-smtp-transport') // 1. 建立 const transport = nodemailer.createTransport(smtpTransport({ host: 'xxx.com', //查看發送郵件的郵箱開放的host port: xx, //查看發送郵件的郵箱開放的port secureConnection: true, //使用 SSL auth: { user: 'xxx@xxx.com', //發送郵件的郵箱 pass: 'xxxxxx' //發送郵件的郵箱的密鑰 } })); // 2. 郵件的具體信息 const mailOptions = { from: '"小明" <xxx@xxx.com>', //發送郵件的郵箱,與上面 user 相同 to: 'xxx@xxx.com', //接收郵件的郵箱,若有多個,用逗號隔開 subject: '這是一封測試郵件', //郵件標題 html: '<p> 這是一封用nodejs的nodemailer發送的測試郵件。</p>' //郵件內容,能夠爲html }; // 3. 發送郵件 transport.sendMail(mailOptions, function(error, info){ if(error){ console.log(error); }else{ console.log('Message sent: ' + info.response); } });
這樣基本的框架都搭好了,其實重要的是在建立時,如何獲取到 host
port
以及 user
中的name
和pass
ui
下面我試驗了兩種郵箱,QQ郵箱 阿里的企業郵箱阿里雲
查看了QQ郵箱的幫助中心 得知 host
爲 smtp.qq.com
port
爲 465
user
是你要發送郵件的郵箱pass
須要開啓郵箱的SMTP
功能,開啓方法在QQ郵箱幫助中心有插件
開啓的時候他會發送給你一串英文,這個就是咱們須要的pass
到這個地方就能夠測試一下了!
到終端執行node test.js
能夠看到打印的日誌,若是顯示OK,那就快去接收的郵箱裏看看有沒有郵件了
注意這裏是企業郵箱,由於我在阿里雲上買的域名,送的企業郵箱,因此想着試一試。
他的幫助文檔裏也能夠查到host
爲 smtpdm.aliyun.com
port
爲 25
user
是你要發送郵件的郵箱pass
的獲取須要配置一下郵箱,使用 SMTP 發送郵件
若是沒有發信域名須要自行新建域名,新建完成後配置域名,連接
而後驗證發信域名,驗證成功後,點擊發信地址
點擊設置SMTP密碼
(注意:這裏必需要設置SMTP密碼,不然仍是沒有開啓成功)
pass
就是你剛剛輸入的SMTP密碼
快去測試一下吧~