0.目標
這一節,我將實現一個簡單的發送郵件功能。
1.部署
1.1 部署Express
如果不知道如何部署,可參照:部署Express
1.2 準備一個郵箱并開始SMTP服務
為了實現這個功能,你首先要有一個郵箱;由于需要使用SMTP方式發送,你還需要開啟相關功能。你可以登錄你的郵箱,然后開啟這個設置,以新浪郵箱和QQ郵箱為例:


2.服務器端
2.1 使用nodemailer
這里要用到nodemailer,需要自行安裝:
npm install nodemailer --save
在routes/index.js中引用nodemailer:
var multer = require('nodemailer');2.2 配置
在routes/index.js中創建一個傳輸方式:
var mailTransport = nodemailer.createTransport({ host : 'smtp.sina.com', secureConnection: true, // 使用SSL方式(安全方式,防止被竊取信息) auth : { user : '你的郵箱地址', pass : '你的郵箱密碼' },});注意,低版本的nodemailer可能需要多傳入一個參數“SMTP”:
var mailTransport = nodemailer.createTransport('SMTP', { host : 'smtp.sina.com', secureConnection: true, // use SSL auth : { user : '你的郵箱地址', pass : '你的郵箱密碼' },});2.3 發送郵件
/* 瀏覽器輸入地址(如127.0.0.1:3000/sned)后即發送 */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}); } });});如果你要發送附件,則先把要發送的文件放入工程中,并修改上面代碼的附件的filename和path。
從代碼中可以知道,要在郵件正文中添加圖片,可以設置圖片的cid,然后在img標簽的src中設置為對應的cid即可。
注意,不建議在js代碼中直接嵌入HTML代碼,也不建議把圖片加到郵件正文中。
3.測試
瀏覽器輸入地址(如127.0.0.1:3000/sned)。
發送等待的時間視附件大小及網絡帶寬等因素不同,如果有一個很大的附件要發送,可能會等待很長時間;所以,建議在測試的時候使用小文件。
如果發送成功,會給出提示:

并在郵箱里收到相應的郵件:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答