express - Nodemailer 传输创建推荐

标签 express typescript nodemailer

我在 express 服务器上设置了邮件服务类。

推荐使用哪种创建传输的方法?

class mailService {
    private transport: nodemailer.Transport;
    constructor(){
        this.transport = nodemailer.createTransport('configstring');
    }

    public sendEmail(email: string){
        //send email
    }
}

或者

class mailService {

    public sendEmail(email: string){
        let transporter = nodemailer.createTransport('configstring');
        //send email
    }

    public sendOtherEmail(email: string){
        let transporter = nodemailer.createTransport('configstring');
        //send email
    }
}

文档说“您可以在创建传输后随意重用它”,这让我认为第一个选项会更好,但无法判断是否有任何优势。

每次简单地创建传输是否会造成重复问题,或者是否会有多个实例在内存中 float ,每次执行 sendEmail 函数时都会成为孤立实例?

最佳答案

使用第二种方法几乎没有什么优势。如果您想更改不同发送作业之间的传输配置,它可能会派上用场。

如果情况并非如此,则建议坚持使用单一传输(第一种方法)根据 DRY 原理。

您也不应该担心这里的内存,因为 Node 有一个垃圾收集器,并且在 sendOtherEmail() 函数结束后内存将被释放。

关于express - Nodemailer 传输创建推荐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45461137/

相关文章:

node.js - 我怎样才能在 Jade(哈巴狗)中做到这一点?

visual-studio-2012 - 无法解析外部模块 typescript

node.js - 使用 nodemailer 和 mandrill smtp 开始出错。 CERT_HAS_EXPIRED 错误 : certificate has expired

javascript - 使用 mongoose 中间件验证密码是否错误?

javascript - 使用 express 获取、存储和使用 JSON 变量

debugging - Mongoose 调试日志到单独的文件

oauth - 在 nodemailer 中通过 gmail oauth 发送电子邮件需要哪个范围?

javascript - Typescript 可以声明语言特性吗?例如; `!variable` 为 `no variable`

javascript - Visual Studio 代码调试器从源映射中的内联内容提供文件

node.js - Nodemailer ECONNREFUSED 本地主机