程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 Typescript 和类发送 mailgun 消息大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 Typescript 和类发送 mailgun 消息?

开发过程中遇到使用 Typescript 和类发送 mailgun 消息的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 Typescript 和类发送 mailgun 消息的解决方法建议,希望对你解决使用 Typescript 和类发送 mailgun 消息有所启发或帮助;

我正在尝试给自己发送一封电子邮件,只是为了测试以确保我已正确设置所有内容。我没有收到任何错误消息,因此无法真正找到我犯错的地方。

以下是我的 @H_731_5@mailer.Js 代码:

import mg,{ Mailgun } from "mailgun-Js"
import utils = require('./utils')

interface MailerConfig {
  APIKey: String,domain: String
}

export class Mailer {
  private mailgun: Mailgun;

  constructor(
    private config: MailerConfig,private fromEmail: String = 'test <Hello@test.com>' 
  ) {
    this.mailgun = mg({
      APIKey: this.config.APIKey,domain: this.config.domain
    })
  }

  async sendmessage(email: String,subject: String,templatename: String,templateVars: Object): Promise<any> {
    const mailData = {
      from: this.fromEmail,// to: email,to: 'test@test.com',subject,template: templatename,...templateVars
    }

    return this.mailgun.messages().send(mailData,(err,body) => {
        if(err || !body) {
          console.log(err)
          console.error('Error:',err)
        }

        console.log('successfully sent email.')
    })
  }
}

我正在尝试使用以下内容发送消息:

const sendEmailToRandomUser = async (): Promise<voID> => {
  try {
    const randomUser: Userdocument = await pickRandomUser()

    // Send winner email using email from user document
    const mailer = new Mailer({
      APIKey: process.env.MAILGUN_API_KEY || '',domain: process.env.MAILGUN_DOMAIN || 'test.domain.com'
    })

    mailer.sendmessage(
      randomUser.email,'You\'ve won!','wewm-please-complete-winner',{ 
        'v:claimPrizeUrl': 'test'
      }
    ).then((res) => {
      console.log(res)
      console.log('exit process')
      // exit automated scheduler
      process.exit(1)
    }).catch(err => console.log(err))

    console.log('end of sendEmailToRandomUser')
    // if everything goes well and email is sent
    // save user property as having received saID email
  } catch (err) {
    console.log(err)
  }
}

sendEmailToRandomUser()

我得到以下输出:

end of sendEmailToRandomUser
undefined
exit process

我哪里出错了?

解决方法

我改为将调用函数的格式改为如下:

    const response = await mailer.sendmessage(
      randomUser.email,'You\'ve won!','wewm-please-complete-winner',{
        'v:claimPrizeUrl': `${process.env.HOSTNAME}/.../.../.../${winningUser.wonEverythingToken}`
      },() => onEmailSendCompleteCallBACk('test@test.com')
    )

通过以下方式传递 onComplete 回调以在完成时触发:

sendmessage(
    email: String,subject: String,templatename: String,templateVars: Object,onEmailSentComplete?: Function
  ): Promise<any> {
    // create mailData info for email
    const mailData = {
      from: this.fromEmail,// to: email,to: 'test@test.com',//TODO: make this user email
      subject,template: templatename,...templateVars
    }

    return this.mailgun.messages().send(mailData,(err,body) => {
      if (err || !body) {
        console.error('Error:',err)
      }

      console.log('successfully sent email to Win Everything We Make Winner!')

      if (onEmailSentCompletE) {
        console.log('email sent!')
        onEmailSentComplete()
      }
    })
  }

大佬总结

以上是大佬教程为你收集整理的使用 Typescript 和类发送 mailgun 消息全部内容,希望文章能够帮你解决使用 Typescript 和类发送 mailgun 消息所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。