Отправка отдельных писем нескольким получателям без использования B CC с API SparkPost - PullRequest
0 голосов
/ 13 марта 2020

Наше приложение Django использует SparkPost в качестве провайдера электронной почты. Внедряемая нами новая функция должна позволять пользователям создавать собственные организационные электронные письма и отправлять их всем, кому они захотят sh. Теперь эти электронные письма должны приниматься как отдельные, а не с несколькими получателями («to»), чтобы пользователи не могли видеть адреса друг друга.

Я провел несколько тестов с передачами 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)

1 Ответ

0 голосов
/ 13 марта 2020

Да, лучше всего сделать это за один вызов REST.

По умолчанию инъекции SparkPost REST имеют размер B CC и будут отправлять отдельные электронные письма каждому получателю. Как вы видели, у вас также может быть типичное поведение "CC", но вам нужно будет установить значения заголовка CC с адресами, которые вы хотите видеть другими.

Так в примере, где CC было включено, у вас должно быть что-то подобное в вызове REST:

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

CC Пример :

{
  "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."
  }
}

B CC Пример :

"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" для любого из получателей.

...