專案中傳送郵件是很常用的功能,今天記錄一下thinkjs中傳送郵件的實現。
安裝依賴
npm install think-email -save
think-email
是基於 nodemailer
實現的thinkjs中的擴充包,可以在thinkjs中方便快速的使用。
配置傳送郵件資訊
配置檔案 src/config/config.環境變數.js
or src/comon/config/config.環境變數.js
中新增如下程式碼:
之所以寫在環境變數檔案中,是因為涉及到私密資訊
module.exports = {
workers: 0,
// ......
email: {
transport: {
service: '126',
auth: {
user: 'xxx@126.com', # 你的郵箱賬號
pass: '******' # 你的郵箱賬號密碼
}
}
}
};
新增email.js
控制器
module.exports = class extends Base {
/**
* 初始化傳送郵件引數
* @returns
*/
initTransport() {
const emailConfig = this.config('email');
return emailConfig.transport;
}
/**
* 傳送郵件驗證碼
* @param to 發給誰
* @param subject 標題
* @param html 內容
* @returns {Promise<void>}
*/
async sendEmailCode(to, subject, html) {
const transport = this.initTransport();
await this.sendEmail(transport, {
from: transport.auth.user,
to,
subject,
html
});
}
};
使用
在需要傳送郵件驗證碼的地方,呼叫 emai.js
控制器的 sendEmailCode
方法即可。
如果是單模組專案,使用如下:
const emailCtrl = this.controller('email');
await emailCtrl.sendEmailCode(email, '郵箱標題', '郵箱內容');
如果說是多模組,只需要在上面程式碼中的第一行呼叫 controller 時加第二個引數 模組名
即可,詳情可參考官方文件。
注意事項
配置檔案中配置的郵箱,和 發件人,要保持一致,不然會報錯。
參考連結
本作品採用《CC 協議》,轉載必須註明作者和本文連結