0.目標(biāo)
這一節(jié),我將實(shí)現(xiàn)一個(gè)簡單的發(fā)送郵件功能。
1.部署
1.1 部署Express
如果不知道如何部署寞钥,可參照: 部署Express
1.2 準(zhǔn)備一個(gè)郵箱并開始SMTP服務(wù)
為了實(shí)現(xiàn)這個(gè)功能蹋肮,你首先要有一個(gè)郵箱;由于需要使用SMTP方式發(fā)送瘾腰,你還需要開啟相關(guān)功能。你可以登錄你的郵箱覆履,然后開啟這個(gè)設(shè)置居灯,以新浪郵箱和QQ郵箱為例:
2.服務(wù)器端
2.1 使用nodemailer
這里要用到nodemailer,需要自行安裝:
npm install nodemailer --save
在routes/index.js中引用nodemailer:
var nodemailer = require('nodemailer');
2.2 配置
在routes/index.js中創(chuàng)建一個(gè)傳輸方式:
var mailTransport = nodemailer.createTransport({
host : 'smtp.sina.com',
secureConnection: true, // 使用SSL方式(安全方式内狗,防止被竊取信息)
auth : {
user : '你的郵箱地址',
pass : '你的郵箱授權(quán)碼'
},
});
注意怪嫌,低版本的nodemailer可能需要多傳入一個(gè)參數(shù)“SMTP”:
var mailTransport = nodemailer.createTransport('SMTP', {
host : 'smtp.sina.com',
secureConnection: true, // use SSL
auth : {
user : '你的郵箱地址',
pass : '你的郵箱授權(quán)碼'
},
});
關(guān)于郵箱授權(quán)碼
感謝@友友_ba32的提醒,這里的pass
不是郵箱密碼(當(dāng)然柳沙,直接用郵箱密碼也是可以的岩灭,但這是不安全的方式;如果你只是想嘗試一下NodeMailer而不是要部署在生產(chǎn)環(huán)境中赂鲤,可以先用郵箱密碼代替)噪径,而是郵箱的“授權(quán)碼”。
qq郵箱中数初,關(guān)于獲取授權(quán)碼的資料可以查看這個(gè)鏈接:什么是授權(quán)碼找爱,它又是如何設(shè)置?
新浪郵箱中泡孩,我沒有找到設(shè)置授權(quán)碼的地方车摄,不知道那就是否有找到入口,歡迎在評論中提供仑鸥。
2.3 發(fā)送郵件
/* 瀏覽器輸入地址(如127.0.0.1:3000/sned)后即發(fā)送 */
router.get('/send', function(req, res, next) {
var options = {
from : '"你的名字" <你的郵箱地址>',
to : '"用戶1" <郵箱地址1>, "用戶2" <郵箱地址2>',
// cc : '' //抄送
// bcc : '' //密送
subject : '一封來自Node Mailer的郵件',
text : '一封來自Node Mailer的郵件',
html : '<h1>你好吮播,這是一封來自NodeMailer的郵件!</h1><p><img src="cid:00000001"/></p>',
attachments :
[
{
filename: 'img1.png', // 改成你的附件名
path: 'public/images/img1.png', // 改成你的附件路徑
cid : '00000001' // cid可被郵件使用
},
{
filename: 'img2.png', // 改成你的附件名
path: 'public/images/img2.png', // 改成你的附件路徑
cid : '00000002' // cid可被郵件使用
},
]
};
mailTransport.sendMail(options, function(err, msg){
if(err){
console.log(err);
res.render('index', { title: err });
}
else {
console.log(msg);
res.render('index', { title: "已接收:"+msg.accepted});
}
});
});
如果你要發(fā)送附件眼俊,則先把要發(fā)送的文件放入工程中意狠,并修改上面代碼的附件的filename和path。
從代碼中可以知道疮胖,要在郵件正文中添加圖片环戈,可以設(shè)置圖片的cid闷板,然后在img標(biāo)簽的src中設(shè)置為對應(yīng)的cid即可。
注意院塞,不建議在js代碼中直接嵌入HTML代碼遮晚,也不建議把圖片加到郵件正文中。
3.測試
瀏覽器輸入地址(如127.0.0.1:3000/sned)迫悠。
發(fā)送等待的時(shí)間視附件大小及網(wǎng)絡(luò)帶寬等因素不同鹏漆,如果有一個(gè)很大的附件要發(fā)送巩梢,可能會等待很長時(shí)間创泄;所以,建議在測試的時(shí)候使用小文件括蝠。
如果發(fā)送成功鞠抑,會給出提示:
并在郵箱里收到相應(yīng)的郵件:
參考資料:
1.《Node與Express開發(fā)》,人民郵電出版社
2.使用NodeJS搭建郵件自動(dòng)發(fā)送服務(wù)器
3.Nodejs發(fā)郵件組件Nodemailer
原創(chuàng)文章忌警,未經(jīng)許可搁拙,請勿轉(zhuǎn)載
作者:Mike的讀書季
日期:2016.09.19
QQ:1139904786
Blog:http://blog.csdn.net/kkdestiny