2015-12-08 5 views
1

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

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

$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]; 

И это Mandrill API:

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

try { 
    $mandrill = new Mandrill('kWre_48F1lnJs3_39YM434z');//API KEY 
    $message = array(
     'html' => 'message', 
     'subject' => 'subject', 
     'from_email' => '[email protected]_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' => '[email protected]_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

Более быстрый способ. Я думаю, что это одно электронное письмо со многими получателями. – Freddie

ответ

2
// 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' => '[email protected]_domain.com', 
     'from_name' => 'My_Domain', 
     'to' => $emails, 
     'headers' => array('Reply-To' => '[email protected]_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 говорит, что для информации одного получателя требуется поле «в» – thepiyush13

+0

Да, я уверен. Документация ссылается на наличие нескольких адресов электронной почты в разделе 'email' поля' to'. –

0

Один легкий путь к проходным $ электронных писем массива и динамически отправить по электронной почте на каждое письмо адрес.

foreach($emails as $email){ 

try { 
    $mandrill = new Mandrill('kWre_48F1lnJs3_39YM434z');//API KEY 
    $message = array(
     'html' => 'message', 
     'subject' => 'subject', 
     'from_email' => '[email protected]_domain.com', 
     'from_name' => 'My_Domain', 
     'to' => array(
      array(
       'email' => $email, 
       'name' => 'Recipient Name', 
       'type' => 'to'*/ 
      ) 
     ), 
     'headers' => array('Reply-To' => '[email protected]_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 с помощью template.However убедитесь, что вы знаете о `s ограничивает

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^