如何利用Node發送郵件

使用Nodemailer發送郵件

最近在作用戶註冊的功能,有這樣的需求:用戶填完信息點擊註冊後,服務器要發給用戶註冊郵箱一個激活連接來激活帳戶,後端用Node寫的,第一次作後端發送郵件的功能,折騰了半天,終於實現了,哈哈。html

關於Node生態下發送郵件的插件也有不少,我用的比較主流的Nodemailer來作的。若是要用SMTP協議的話還要引入Nodemailer的一個模塊nodemailer-smtp-transportnode

Nodemailer官網npm

首先新建一個文件夾,cd到這個文件夾後端

安裝 Nodemailernodemailer-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中的namepassui

下面我試驗了兩種郵箱,QQ郵箱 阿里的企業郵箱阿里雲

QQ郵箱

查看了QQ郵箱的幫助中心 得知
hostsmtp.qq.com
port465
user 是你要發送郵件的郵箱
pass 須要開啓郵箱的SMTP
功能,開啓方法在QQ郵箱幫助中心插件

開啓的時候他會發送給你一串英文,這個就是咱們須要的pass

到這個地方就能夠測試一下了!

到終端執行
node test.js
能夠看到打印的日誌,若是顯示OK,那就快去接收的郵箱裏看看有沒有郵件了

阿里企業郵箱

注意這裏是企業郵箱,由於我在阿里雲上買的域名,送的企業郵箱,因此想着試一試。

他的幫助文檔裏也能夠查到
hostsmtpdm.aliyun.com
port25
user 是你要發送郵件的郵箱
pass 的獲取須要配置一下郵箱,使用 SMTP 發送郵件

若是沒有發信域名須要自行新建域名,新建完成後配置域名,連接

而後驗證發信域名,驗證成功後,點擊發信地址 點擊設置SMTP密碼(注意:這裏必需要設置SMTP密碼,不然仍是沒有開啓成功)

pass就是你剛剛輸入的SMTP密碼

快去測試一下吧~

相關文章
相關標籤/搜索