ここではさくらのSMTPを使って送信を行います。
nodemailer
nodemailer document
を使用します。
ポイント
tlsを使用するにはsecure: true
ですが465ポート強制になってしまう。
さくらは587を要求しているのでsecure: false
でrequireTLS: true
を設定する必要がある。
コード
mail.js
const mail = require('nodemailer');
const transporter = mail.createTransport({
host: 'XXXXXXXX.sakura.ne.jp',
port: 587,
secure: false,
requireTLS: true,
auth: {
user: 'user',
pass: 'pass'
}
});
let mailOptions = {
from: 'sender@example.com',
to: 'recipient@example.com',
subject: 'Message',
text: ''
};
// return Promise
exports.send = (body) => {
mailOptions.text = body;
// メール送信
return (async () => {
const result = await transporter.sendMail(mailOptions).then(info => {
return {
flag: true,
data: info
};
}).catch(error => {
return {
flag: false,
data: error
};
});
if (!result.flag) {
console.log(result.data.stack);// メール送信失敗時のスタックトレース
}
})();
}