首页 > 解决方案 > 无需通过 SparkPost API 使用密件抄送即可将单个电子邮件发送给多个收件人

问题描述

我们的 Django 应用程序使用 SparkPost 作为电子邮件提供商。我们正在实施的一项新功能应该允许用户创建自己的组织电子邮件并将其发送给他们想要的任何人。现在,这些电子邮件应该作为单独的电子邮件接收,而不是多个收件人(“收件人”),这样用户就无法看到彼此的地址。

我已经使用SparkPost 传输 API运行了一些测试。这是您发送电子邮件的方式:

sp = SparkPost(API_KEY)
response = sp.transmissions.send(recipients=emails, html=body, from_email=sender, subject=self.subject)

emails字符串文字列表在哪里。

在除一个之外的所有测试用例中,我确实收到了一封带有单个收件人的电子邮件,就像我之后一样。但在一种情况下,电子邮件有多个“收件人”电子邮件,您可以看到彼此的电子邮件地址。我在代码中完全没有改变,这只是发生了

除了为每个收件人发送单独的传输之外,我还有什么办法可以做到这一点?如果涉及到这一点,我会担心性能:

sp = SparkPost(API_KEY)
for email in emails:
    sp.transmissions.send(recipients=email, html=body, from_email=sender, subject=self.subject)

标签: pythondjangoemailsparkpost

解决方案


是的,最好在单个 REST 调用中执行此操作。

默认情况下,SparkPost REST 注入是密件抄送,并将向每个收件人发送单独的电子邮件。正如您所看到的,您也可以具有典型的“CC”行为,但您需要CC使用您希望其他人看到的地址来设置标题值。

因此,在包含 CC 的示例中,您必须在 REST 调用中有类似的内容:

"headers": {
    "CC": "cc@thatperson.com"
},

抄送示例

{
  "recipients": [
    {
      "address": {
        "email": "to@thisperson.com"
      }
    },
    {
      "address": {
        "email": "cc@thatperson.com",
        "header_to": "to@thisperson.com"
      }
    }
  ],
  "content": {
    "from": "you@fromyou.com",
    "headers": {
      "CC": "cc@thatperson.com"
    },
    "subject": "To and CC",
    "text": "This mail was sent to to@thisperson.com while CCing cc@thatperson.com."
  }
}

密件抄送示例

"recipients": [
    {
      "address": {
        "email": "to@thisperson.com"
      }
    },
    {
      "address": {
        "email": "bcc@thatperson.com",
        "header_to": "to@thisperson.com"
      }
    }
  ],
  "content": {
    "from": "you@fromyou.com"
    "subject": "To and BCC",
    "text": "This mail was sent To to@thisperson.com while BCCing an unnamed recipient. Sneaky."
  }
}

在您的用例中,您不想"header_to": "to@thisperson.com"为任何收件人设置。


推荐阅读