node.js - 如何使 nodemailer 在多个模块中可重用?
问题描述
我nodemailer
在用户注册后实现了,方式如下:
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: process.env.EMAIL_USERNAME,
pass: process.env.EMAIL_PASSWORD
}
});
let mailOptions = {
from: process.env.EMAIL_USERNAME,
to: user.email,
subject: 'Verify your account',
text: 'Click here for verify your account'
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
});
我不太喜欢这段代码,因为如果我需要在另一个中发送电子邮件module
,我需要重写上面的所有内容。
由于我是新来的NodeJS
,我想知道我是否可以删除这种代码冗余,使之类的东西成为一个utility
或一个helper
类。目标是导入wrapper
类并调用一个简单的函数来发送电子邮件。
处理这个问题的最佳方法是什么?
解决方案
我将您的代码重构为如下所示,然后将其保存为mail.js
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: process.env.EMAIL_USERNAME,
pass: process.env.EMAIL_PASSWORD
}
});
let sendMail = (mailOptions)=>{
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
});
};
module.exports = sendMail;
在你的其他模块中,比如activation.js
var mailer = require('./mail.js');
mailer({
from: process.env.EMAIL_USERNAME,
to: user.email,
subject: 'Verify your account',
text: 'Click here for verify your account'
};);
推荐阅读
- reactjs - 如何修复此错误在多个渲染()操作期间无法使用相同的画布
- ruby-on-rails - Rails 5:当我在开发中设置 cookie 存储时,我从设计中获得了无效的真实性令牌
- laravel - 在 Laravel 中上传头像注册失败
- react-native - React Native 测量网络带宽使用情况
- ionic-framework - 离子服务在编译 ionic 3 项目时花费了太多时间,例如 4 到 6 分钟
- docker - 关于容器化的 Docker 查询
- cordova - 离子找不到'localforage'的类型定义文件
- laravel - 如何将 sso 与广告与已经使用 oauth 登录的流明应用程序集成?
- sql - MS Access - 不明确的外部连接?
- php - 在 mod_articles_latest 中渲染文章标签