姓名:謝艾芳? 學(xué)號:16040410073
轉(zhuǎn)自http://www.reibang.com/p/985d26b40199
〖嵌牛導(dǎo)讀〗使用NodeMailer發(fā)送郵件
〖嵌牛鼻子〗NodeMailer? 發(fā)送郵件
〖嵌牛提問〗如何自己用NodeMailer發(fā)送郵件
〖嵌牛正文〗
0.目標(biāo)
這一節(jié),我將實現(xiàn)一個簡單的發(fā)送郵件功能刷允。
參考代碼
1.部署
1.1 部署Express
如果不知道如何部署,可參照: 部署Express
1.2 準(zhǔn)備一個郵箱并開始SMTP服務(wù)
為了實現(xiàn)這個功能柑司,你首先要有一個郵箱;由于需要使用SMTP方式發(fā)送,你還需要開啟相關(guān)功能挡闰。你可以登錄你的郵箱逗扒,然后開啟這個設(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)建一個傳輸方式:
var mailTransport = nodemailer.createTransport({
? ? host : 'smtp.sina.com',
? ? secureConnection: true, // 使用SSL方式(安全方式矩肩,防止被竊取信息)
? ? auth : {
? ? ? ? user : '你的郵箱地址',
? ? ? ? pass : '你的郵箱密碼'
? ? },
});
注意现恼,低版本的nodemailer可能需要多傳入一個參數(shù)“SMTP”:
var mailTransport = nodemailer.createTransport('SMTP', {
? ? host : 'smtp.sina.com',
? ? secureConnection: true, // use SSL
? ? auth : {
? ? ? ? user : '你的郵箱地址',
? ? ? ? pass : '你的郵箱密碼'
? ? },
});
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ā)送等待的時間視附件大小及網(wǎng)絡(luò)帶寬等因素不同,如果有一個很大的附件要發(fā)送赠法,可能會等待很長時間麦轰;所以,建議在測試的時候使用小文件砖织。
如果發(fā)送成功款侵,會給出提示:
1.《Node與Express開發(fā)》,人民郵電出版社
2.使用NodeJS搭建郵件自動發(fā)送服務(wù)器
3.Nodejs發(fā)郵件組件Nodemailer