【问题标题】:Email not showing To:, Cc, and Bcc in Amazon SES SendRawEmail (Node.JS)Amazon SES SendRawEmail (Node.JS) 中的电子邮件未显示 To:、Cc 和 Bcc
【发布时间】:2019-08-14 04:57:09
【问题描述】:

跟进this solution 关于在发送 RawEmail 时添加抄送和密件抄送,收到电子邮件时,收件人、抄送和密件抄送字段为空白。为了最快的实现,我使用这个 OSS aws-thin-ses-node 库。

我的发送原始电子邮件方法定义为(to、cc 和 bcc 是数组,所以我只需对 asOptionalArray 和 asValueFromArray 方法进行一些调整,以按照AWS SDK 中定义的格式发送)。

我可以改进什么来解决这个小问题,虽然它发送到所有收件人、抄送和密件抄送地址,但它很高兴拥有它?我附上了我的 sendRawEmail 和 getRawMessages 方法定义如下

sendRawEmail: async ({ to, cc, bcc data}) => {
      let destinations

      if (cc && cc.length && bcc && bcc.length) {
        destinations = [...cc, ...bcc]
        destinations.unshift(asValueFromArray(to, 0))
      } else {
        destinations = to
      }

      const params = {
        Destinations: asOptionalArray(destinations),
        To: to instanceof Array ? to : asOptionalArray(to),
        Cc: asOptionalArray(cc),
        Bcc: asOptionalArray(bcc),
        RawMessage: {
          Data: await getRawMessage(data)
        }
      }
      return client.sendEmail(params)
    }

const getRawMessage = (data) => {
  const template = getReportTemplate()
  const subject = getSubject()
  const reportName = getReportName()
  let sesMail = 'From: noReply <' + noreplyEmail + '>\n'
  sesMail += 'Subject: ' + subject + '\n'
  sesMail += 'MIME-Version: 1.0\n'
  sesMail += 'Content-Type: multipart/mixed; boundary="NextPart"\n\n'
  sesMail += '--NextPart\n'
  sesMail += 'Content-Type: text/html\n\n'
  sesMail += template.report + '\n\n'
  sesMail += '--NextPart\n'
  sesMail += 'Content-Type: application/msexcel; name="' + reportName + '"\n'
  sesMail += 'Content-Transfer-Encoding: base64\n'
  sesMail += 'Content-Disposition: attachment\n\n'
  sesMail += data.toString('base64') + '\n\n'
  sesMail += '--NextPart--'
  // eslint-disable-next-line
  const base64Encoded = new Buffer.from(sesMail).toString('base64')
  return base64Encoded
}

发送原始电子邮件如下所示:

【问题讨论】:

  • 你分享的 SO 帖子说你不应该为 Destinations 参数发送任何东西,但我看到你总是发送 destinations 对象,这使得忽略 Cc,Bcc。对吗?
  • @Imran 当发送 Destinations 参数为空而未在标头中定义 To、Cc 和 Bb 时,AWS 响应是 400 Bad 请求。我终于找到了解决办法。
  • 太棒了!!。很高兴它解决了!

标签: node.js amazon-web-services email amazon-ses


【解决方案1】:

我终于找到了解决方案,问题是我没有在 ses 邮件标头中定义 To、Cc 和 Bcc,正如建议的那样,我的目的地数组现在是空的并重写我的

const getRawMessage = (to, cc, bcc, data) => {
  const template = getReportTemplate()
  const subject = getSubject()
  const reportName = getReportName()
  let sesMail = 'From: noReply <' + noreplyEmail + '>\n'
  sesMail += 'To: ' + asValueFromArray(to, 0) + '\n'
  sesMail += cc && cc.length ? 'Cc: ' + asOptionalArray(cc) + '\n' : ''
  sesMail += bcc && bcc.length ? 'Bcc: ' + asOptionalArray(bcc) + '\n' : ''
  sesMail += 'Subject: ' + subject + '\n'
  sesMail += 'MIME-Version: 1.0\n'
  sesMail += 'Content-Type: multipart/mixed; boundary="NextPart"\n\n'
  sesMail += '--NextPart\n'
  sesMail += 'Content-Type: text/html\n\n'
  sesMail += template.report + '\n\n'
  sesMail += '--NextPart\n'
  sesMail += 'Content-Type: application/msexcel; name="' + reportName + '"\n'
  sesMail += 'Content-Transfer-Encoding: base64\n'
  sesMail += 'Content-Disposition: attachment\n\n'
  sesMail += data.toString('base64') + '\n\n'
  sesMail += '--NextPart--'
  // eslint-disable-next-line
  const base64Encoded = new Buffer.from(sesMail).toString('base64')
  return base64Encoded
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 2014-04-03
    • 2018-01-22
    • 1970-01-01
    相关资源
    最近更新 更多