Специальные символы в Amazon SES

Я использую AWS SDK для PHP (https://github.com/aws/aws-sdk-php) для отправки электронных писем с помощью Amazon SES. Вот код:

<?php

require 'vendor/autoload.php';

use Aws\Ses\SesClient;

$client = SesClient::factory(array(
    'key'    => 'XXXXXXXXXXXXXXXX',
    'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
    'region' => 'eu-west-1'
));

$result = $client->sendEmail(array(
    // Source is required
    'Source' => 'Télécom Co <[email protected]>',
    // Destination is required
    'Destination' => array(
        'ToAddresses' => array('Grégory Smith <[email protected]>')
    ),
    // Message is required
    'Message' => array(
        // Subject is required
        'Subject' => array(
            // Data is required
            'Data' => 'The subject',
            'Charset' => 'utf-8',
        ),
        // Body is required
        'Body' => array(
            'Text' => array(
                // Data is required
                'Data' => 'The message',
                'Charset' => 'utf-8',
            )
        ),
    )
));

?>

Проблема в том, что в почтовых клиентах "Télécom" отображается как "T�l�com", а "Grégory" - как "Gr�gory".

Есть ли решения этой проблемы?


person Marvin Saldinger    schedule 19.02.2014    source источник


Ответы (1)


Вот решение:

<?php

require 'vendor/autoload.php';

use Aws\Ses\SesClient;

$client = SesClient::factory(array(
    'key'    => 'XXXXXXXXXXXXXXXX',
    'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
    'region' => 'eu-west-1'
));


$from_name = base64_encode("Télécom Co");
$from = "=?utf-8?B?$from_name?= <[email protected]>";

$to_name = base64_encode('Grégory Smith');
$to = array("=?utf-8?B?$to_name?= <[email protected]>");


$result = $client->sendEmail(array(
    // Source is required
    'Source' => $from,
    // Destination is required
    'Destination' => array(
        'ToAddresses' => $to
    ),
    // Message is required
    'Message' => array(
        // Subject is required
        'Subject' => array(
            // Data is required
            'Data' => 'The subject',
            'Charset' => 'utf-8',
        ),
        // Body is required
        'Body' => array(
            'Text' => array(
                // Data is required
                'Data' => 'The message',
                'Charset' => 'utf-8',
            )
        ),
    )
));

?>
person Marvin Saldinger    schedule 20.02.2014
comment
Да, RFC 2047 требует кодирования почтовых заголовков, отличных от ASCII. - person Ryan Parman; 20.02.2014