【實習】nodemailer:寄信
參考:
- W3C-Node.js Send an Email
- node.js使用nodemailer傳送郵件例項Script
- Error: Invalid login: 535-5.7.8 Username and Password not accepted
- 下載:npm install nodemailer
- 匯入:var nodemailer = require('nodemailer');
- createTransport:service: 'gmail',
var transporter = nodemailer.createTransport({
auth: {
user: 'youremail@gmail.com',//信箱帳號
pass: 'yourpassword'//信箱密碼
}
}); - mailOptions:
var mailOptions = {
from: 'youremail@gmail.com',//寄信者
to: 'myfriend@yahoo.com',//收信者
subject: 'Sending Email using Node.js',//主旨
text: 'That was easy!'//內容
}; - 寄信:
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
爬文說需要更改gmail設定:gmail help
在信箱設定→查看所有設定→轉寄和POP/IMAP→開啟POP和IMAP→儲存變更。
在信箱設定→查看所有設定→轉寄和POP/IMAP→開啟POP和IMAP→儲存變更。
後來查詢其他範例(參考2.),將createTransport內新增host: 'smtp.gmail.com'、port: 465、secureConnection: true。
var transporter = nodemailer.createTransport({
service: 'gmail',
host: 'smtp.gmail.com',
secureConnection: true,
port:465,
auth: {
user: 'sofavup4@gmail.com',
pass: 'sofaVUP44'
}
});
參考2本來是這樣:
var smtpTransport = nodemailer.createTransport("SMTP",{
host: "smtp.qq.com", // 主機
secureConnection: true, // 使用 SSL
port: 465, // SMTP 埠
auth: {
user: "xxxxxxxx@qq.com", // 賬號
pass: "xxxxxxxx" // 密碼
}
});
多了"SMTP"會有錯:TypeError: Cannot create property 'mailer' on string 'SMTP'
於是就把"SMTP"刪掉,但又一樣登入不了。
後來利用錯誤訊息找到解決方法(參考3):
將信箱的【低安全性應用程式存取權】開啟就可以寄信了。
先以單獨的檔案執行:node email.js
結合之前的api:
router.post('/send', cors(), function(req, res. next){
//send email code here...
在transporter.sendMail中,把結果以res.status().send('...')回傳
});
用postman測試,網址:http://localhost:3000/send,body選json內容打入email,可成功寄信。