Как я могу отправить электронное письмо нескольким получателям, используя Mandrill API?

1

Я нашел похожие вопросы, но до сих пор неясно. Как отправить электронное письмо нескольким получателям с помощью API Mandrill?

Количество получателей может варьироваться в зависимости от информации, хранящейся на db:

$query = "SELECT emails FROM emails_table";
$data = mysql_query($query);
$n = 0;
while ($row = mysql_fetch_assoc($data))
{
$email[$n] = $row['emails'];
$n++;
}

Таким образом, электронные письма будут храниться в таких переменных. Например

$email[0] = [email protected];
$email[1] = [email protected];
$email[2] = [email protected];

И это API Mandrill:

require("/mandrill_mail/src/Mandrill.php");

try {
    $mandrill = new Mandrill('kWre_48F1lnJs3_39YM434z');//API KEY
    $message = array(
        'html' => 'message',
        'subject' => 'subject',
        'from_email' => 'my_mail@my_domain.com',
        'from_name' => 'My_Domain',
        'to' => array(
            array(
                'email' => $email[0], //How can I add the other emails considering that the number of recipients will vary depending on the data in the db?
                'name' => 'Recipient Name',
                'type' => 'to'*/
            )
        ),
        'headers' => array('Reply-To' => 'my_mail@my_domain.com'),
        'important' => false,
        'track_opens' => null,
        'track_clicks' => null,
        'auto_text' => null,
        'auto_html' => null,
        'inline_css' => null,
        'url_strip_qs' => null,
        'preserve_recipients' => false,
        'view_content_link' => null,
        'bcc_address' => $mail_bc,
        'tracking_domain' => null,
        'signing_domain' => null,
        'return_path_domain' => null,
        'merge' => true,
        'merge_language' => 'mailchimp',

    );
    $async = false;
    $ip_pool = 'Main Pool';

    $result = $mandrill->messages->send($message, $async, $ip_pool);
} 
  • 0
    как вы хотите отправить письмо? Как несколько отдельных писем тем получателям? или как одно письмо со многими получателями?
  • 0
    Более быстрый способ. Я думаю, что это одно письмо со многими получателями.
Показать ещё 2 комментария
Теги:
mandrill

2 ответа

3
Лучший ответ
// build the 'to' array
$query = "SELECT emails FROM emails_table";
$data = mysql_query($query);
$emails = array();
while ($row = mysql_fetch_assoc($data)) {
    $emails[] = array(
        'email' => $row['emails'], 
        'type' => 'to'
    );
}

затем

require("/mandrill_mail/src/Mandrill.php");

try {
    $mandrill = new Mandrill('kWre_48F1lnJs3_39YM434z');//API KEY
    $message = array(
        'html' => 'message',
        'subject' => 'subject',
        'from_email' => 'my_mail@my_domain.com',
        'from_name' => 'My_Domain',
        'to' => $emails,
        'headers' => array('Reply-To' => 'my_mail@my_domain.com'),
        'important' => false,
        'track_opens' => null,
        'track_clicks' => null,
        'auto_text' => null,
        'auto_html' => null,
        'inline_css' => null,
        'url_strip_qs' => null,
        'preserve_recipients' => false,
        'view_content_link' => null,
        'bcc_address' => $mail_bc,
        'tracking_domain' => null,
        'signing_domain' => null,
        'return_path_domain' => null,
        'merge' => true,
        'merge_language' => 'mailchimp',

    );
    $async = false;
    $ip_pool = 'Main Pool';

    $result = $mandrill->messages->send($message, $async, $ip_pool);
} 
  • 0
    ты уверен в этом методе? В документации API указано, что для этого требуется информация одного получателя в поле «to».
  • 0
    Да, я уверен. Документация относится к наличию нескольких адресов email части email поля to .
0

Одним из простых способов является цикл через массив $ emails и динамическая отправка электронной почты на каждый адрес электронной почты.

foreach($emails as $email){

try {
    $mandrill = new Mandrill('kWre_48F1lnJs3_39YM434z');//API KEY
    $message = array(
        'html' => 'message',
        'subject' => 'subject',
        'from_email' => 'my_mail@my_domain.com',
        'from_name' => 'My_Domain',
        'to' => array(
            array(
                'email' => $email, 
                'name' => 'Recipient Name',
                'type' => 'to'*/
            )
        ),
        'headers' => array('Reply-To' => 'my_mail@my_domain.com'),
        'important' => false,
        'track_opens' => null,
        'track_clicks' => null,
        'auto_text' => null,
        'auto_html' => null,
        'inline_css' => null,
        'url_strip_qs' => null,
        'preserve_recipients' => false,
        'view_content_link' => null,
        'bcc_address' => $mail_bc,
        'tracking_domain' => null,
        'signing_domain' => null,
        'return_path_domain' => null,
        'merge' => true,
        'merge_language' => 'mailchimp',

    );
    $async = false;
    $ip_pool = 'Main Pool';

    $result = $mandrill->messages->send($message, $async, $ip_pool);
} 

}

Вы также можете отправить новое сообщение через Mandrill с помощью шаблона. Однако убедитесь, что вы знаете об этом.

Для сообщений SMTP вы можете отправлять до 1000 получателей за раз. Если вы отправляете больше получателей, допускаются одновременные и последующие подключения.

Для API нет ограничений для получателей, но JSON, предоставленный для вызова API, должен быть меньше 10 МБ. Мы настоятельно рекомендуем небольшие партии получателей для упрощения поиска неисправностей.

Для сообщений SMTP вы можете отправлять до 1000 получателей за раз. Если вы отправляете больше получателей, допускаются одновременные и последующие подключения.

Для API нет ограничений для получателей, но JSON, предоставленный для вызова API, должен быть меньше 10 МБ. Мы настоятельно рекомендуем небольшие партии получателей для упрощения поиска неисправностей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню