2015-06-10 2 views
0

Я начал использовать Mandrill для отправки всех писем с нашего сайта, но столкнулся с проблемой кодирования.Как я могу отправить кириллические письма с кодировкой Mandrill и Windows1251?

Кодирование сайта по-прежнему Windows1251/CP-1251 (у меня действительно нет времени его изменить). Я могу отправлять электронные письма на английском языке. Но когда я пытаюсь отправить кириллические письма (украинский, русский и т. Д.), Он показывает мне ошибку «Вы должны указать значение ключа ...».

Мне нужно всегда кодировать тело письма на UTF-8. В этом случае Mandrill хорошо отправляет письмо, но письма со сломанной кодировкой.

Кто-нибудь знает, можно ли отправлять электронные письма с помощью Mandrill с использованием кодировки Windows-1251? Как я могу это исправить? Любой совет будет полезен!

код ниже:

require_once "all-sdk/mandrill/src/Mandrill.php"; 
$message_txt = utf8_encode($message); 

try { 
    $mandrill = new Mandrill('my_api_key_here'); 
    $message = array(
     'html' => $message_txt, 
     'text' => 'Example text content', 
     'subject' => 'example subject', 
     'from_email' => '[email protected]', 
     'from_name' => 'Example Name', 
     'to' => array(
      array(
       'email' => '[email protected]', 
       'name' => 'Recipient Name', 
       'type' => 'to' 
      ) 
     ), 
     'headers' => array('Reply-To' => '[email protected]'), 
     'important' => false, 
     'track_opens' => null, 
     'track_clicks' => null, 
     'auto_text' => null, 
     'auto_html' => null, 
     'inline_css' => null, 
     'url_strip_qs' => null, 
     'preserve_recipients' => null, 
     'view_content_link' => null, 
     'bcc_address' => '[email protected]', 
     'tracking_domain' => null, 
     'signing_domain' => null, 
     'return_path_domain' => null, 
     'merge' => true, 
     'merge_language' => 'mailchimp', 
     'global_merge_vars' => array(
      array(
       'name' => 'merge1', 
       'content' => 'merge1 content' 
      ) 
     ), 
     'merge_vars' => array(
      array(
       'rcpt' => '[email protected]', 
       'vars' => array(
        array(
         'name' => 'merge2', 
         'content' => 'merge2 content' 
        ) 
       ) 
      ) 
     )//, 
     // 'tags' => array('password-resets'), 
     // 'subaccount' => 'customer-123', 
     // 'google_analytics_domains' => array('example.com'), 
     // 'google_analytics_campaign' => '[email protected]', 
     // 'metadata' => array('website' => 'www.example.com'), 
     // 'recipient_metadata' => array(
     //  array(
     //   'rcpt' => '[email protected]', 
     //   'values' => array('user_id' => 123456) 
     // ) 
     //), 
     // 'attachments' => array(
     //  array(
     //   'type' => 'text/plain', 
     //   'name' => 'myfile.txt', 
     //   'content' => 'ZXhhbXBsZSBmaWxl' 
     // ) 
     //), 
     // 'images' => array(
     //  array(
     //   'type' => 'image/png', 
     //   'name' => 'IMAGECID', 
     //   'content' => 'ZXhhbXBsZSBmaWxl' 
     // ) 
     //) 
    ); 
    $async = false; 
    // $ip_pool = 'Main Pool'; 
    // $send_at = 'example send_at'; 
    // $result = $mandrill->messages->send($message, $async, $ip_pool, $send_at); 
    $result = $mandrill->messages->send($message, $async, '',''); 
    print_r($result); 
    /* 
    Array 
    (
     [0] => Array 
      (
       [email] => [email protected] 
       [status] => sent 
       [reject_reason] => hard-bounce 
       [_id] => abc123abc123abc123abc123abc123 
      ) 

    ) 
    */ 
} catch(Mandrill_Error $e) { 
    // Mandrill errors are thrown as exceptions 
    echo 'A mandrill error occurred: ' . get_class($e) . ' - ' . $e->getMessage(); 
    // A mandrill error occurred: Mandrill_Unknown_Subaccount - No subaccount exists with the id 'customer-123' 
    throw $e; 
} 
+0

Можем ли мы увидеть ваш код, который называет Mandrill, отредактированный в вопрос? – halfer

+0

Код @halfer добавлен! –

+1

Попробуйте преобразовать сообщение из его текущего символа в UTF-8 перед отправкой в ​​Mandrill. Посмотрите на ['iconv'] (https://php.net/manual/en/function.iconv.php) для этого. – halfer

ответ

1

Найдено! Для отправки писем с кириллицей (cp1251) в Madrill просто используйте iconv-функцию перед любым вызовом API.

$message_txt = iconv('windows-1251','UTF-8',$message); 
$subject = iconv('windows-1251','UTF-8',$subject); 
+0

Да, это именно то, что я предложил ':-)'. – halfer

+0

@ halfer Да, большое вам спасибо! Я дал вам точку! :) –

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