Node.js使用NodeMailer發(fā)送郵件實(shí)例代碼
0.目標(biāo)
這一節(jié),我將實(shí)現(xiàn)一個(gè)簡(jiǎn)單的發(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 multer = require('nodemailer');
2.2 配置
在routes/index.js中創(chuàng)建一個(gè)傳輸方式:
var mailTransport = nodemailer.createTransport({
host : 'smtp.sina.com',
secureConnection: true, // 使用SSL方式(安全方式,防止被竊取信息)
auth : {
user : '你的郵箱地址',
pass : '你的郵箱密碼'
},
});
注意,低版本的nodemailer可能需要多傳入一個(gè)參數(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è)置為對(duì)應(yīng)的cid即可。
注意,不建議在js代碼中直接嵌入HTML代碼,也不建議把圖片加到郵件正文中。
3.測(cè)試
瀏覽器輸入地址(如127.0.0.1:3000/sned)。
發(fā)送等待的時(shí)間視附件大小及網(wǎng)絡(luò)帶寬等因素不同,如果有一個(gè)很大的附件要發(fā)送,可能會(huì)等待很長(zhǎng)時(shí)間;所以,建議在測(cè)試的時(shí)候使用小文件。
如果發(fā)送成功,會(huì)給出提示:

并在郵箱里收到相應(yīng)的郵件:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- nodejs實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼功能
- node.js模擬實(shí)現(xiàn)自動(dòng)發(fā)送郵件驗(yàn)證碼
- 如何利用node實(shí)現(xiàn)發(fā)送QQ郵箱驗(yàn)證碼
- Nodejs 發(fā)送Post請(qǐng)求功能(發(fā)短信驗(yàn)證碼例子)
- Node.js使用第三方插件nodemailer實(shí)現(xiàn)郵件發(fā)送示例
- Node使用Nodemailer發(fā)送郵件的方法實(shí)現(xiàn)
- nodejs模塊nodemailer基本使用-郵件發(fā)送示例(支持附件)
- 基于Node.js實(shí)現(xiàn)nodemailer郵件發(fā)送
- node.js使用nodemailer發(fā)送郵件實(shí)例
- node 使用 nodemailer工具發(fā)送驗(yàn)證碼到郵箱
相關(guān)文章
詳解如何在nodejs項(xiàng)目中使用Vue的響應(yīng)式API
vue3的響應(yīng)式API大家應(yīng)該都特別熟悉,平時(shí)大家都是在vue-cli或者vite創(chuàng)建的vue項(xiàng)目里面使用的這些響應(yīng)式API,今天小編來和大家聊聊如何在node.js項(xiàng)目中使用vue的響應(yīng)式API吧2024-11-11
Node.js項(xiàng)目中調(diào)用JavaScript的EJS模板庫(kù)的方法
這篇文章主要介紹了Node.js項(xiàng)目中調(diào)用JavaScript的EJS模板庫(kù)的方法,通過EJS模板引擎可以制作出維護(hù)性良好的HTML代碼結(jié)構(gòu),需要的朋友可以參考下2016-03-03
node.js如何自定義實(shí)現(xiàn)一個(gè)EventEmitter
我們了解到,Node采用了事件驅(qū)動(dòng)機(jī)制,而EventEmitter就是Node實(shí)現(xiàn)事件驅(qū)動(dòng)的基礎(chǔ),本文主要介紹了node.js自定義實(shí)現(xiàn)EventEmitter,感興趣的可以了解一下2021-07-07
詳解nodejs通過代理(proxy)發(fā)送http請(qǐng)求(request)
本篇文章主要介紹了nodejs通過代理(proxy)發(fā)送http請(qǐng)求(request),具有一定的參考價(jià)值,有興趣的可以了解一下2017-09-09
nodejs使用PassThrough流進(jìn)行數(shù)據(jù)傳遞合并示例詳解
這篇文章主要為大家介紹了nodejs使用PassThrough流進(jìn)行數(shù)據(jù)傳遞合并示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
使用pify實(shí)現(xiàn)Node.js回調(diào)函數(shù)的Promise化
使用pify庫(kù),你可以非常便利地將任何遵循Node.js回調(diào)風(fēng)格的函數(shù)轉(zhuǎn)換為返回Promise對(duì)象的函數(shù),從而使得你的異步代碼更加清晰和易于維護(hù),本文通過豐富的代碼示例引導(dǎo)你如何有效地利用pify,需要的朋友可以參考下2024-06-06
nodejs中使用worker_threads來創(chuàng)建新的線程的方法
這篇文章主要介紹了nodejs中使用worker_threads來創(chuàng)建新的線程的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01

