我无法使用 sendgrid-nodejs 发送邮件

问题描述

我正在使用 sendgrid-nodejs。但是我有一个我无法解决的问题。
我正在使用 typescript express 后端。

import * as SendgridMail from '@sendgrid/mail'
import * as consolidate from 'consolidate'
import * as path from 'path'
import { Type } from '../constants/emailTemplate'
import { generateAccessCode,validateEmailSendingCapability } from '../controllers/emailSettings'

SendgridMail.setApiKey(process.env.SENDGRID_API_KEY)

export class EmailBuilder {
    private static parseBody(view: string,data: any) {
        return new Promise((resolve,reject) => {
            const fileName = path.join(__dirname,'/../',view)
            consolidate.swig(fileName,data,(err,html) => err ? reject(err) : resolve(html))
        })
    }

    private template: Type
    private to: string[]
    private from: string
    private subject: string
    private data: object

    constructor(template: Type,to: string[],data: object) {
        this.template = template
        this.to = to
        this.from = template.from
        this.subject = template.subject
        this.data = data
    }

    public setFrom(from: string) {
        this.from = from
    }

    public setSubject(subject: string) {
        this.subject = subject
    }

    public send() {
        const { to,from,subject,template,data } = this
        return generateAccessCode(to)
            .then((recipientEmails) => Promise.all(recipientEmails.map((re: any) => {
                return EmailBuilder.parseBody(template.view,{ ...data,emailCode: re.shortId,accessCode: re.accessCode })
                .then((html: string) => {
                    SendgridMail.send({ to: re.email,from: { email: from,name: 'aaaaaa' },html })
                    .then(()=>{})
                    .catch((err)=>{
                        console.log(err)
                    })
                }).catch((err)=>{
                        console.log(err)
                })
            })
            ).catch((err)=>{
                console.log(err)
            })
        )
    }
}

我使用了 EmailBuilder 类,如下所示。

const eb = new EmailBuilder(NOTIFICATION,to,mailData)
eb.send()

错误结果显示如下。

Error: aborted
     at connResetException (node:internal/errors:631:14)
     at TLSSocket.socketCloseListener (node:_http_client:438:27)
     at TLSSocket.emit (node:events:388:22)
     at TLSSocket.EventEmitter.emit (node:domain:532:15)
     at node:net:666:12
     at TCP.done (node:_tls_wrap:573:7)
     at TCP.callbackTrampoline (node:internal/async_hooks:131:14) {
   code: 'ECONNRESET'
 }

我已经多次尝试解决这个问题。但我无法解决这个问题。我不知道这个问题的原因。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)