2016-02-08 3 views
0

Я пытался добавить пользовательский заголовок с помощью SDK PHP SDK, чтобы я мог реализовать заголовок «Список-отписаться».
Проблема в том, что я не могу найти нигде, как ее реализовать.

Я прочитал документацию, но ничего.
http://docs.aws.amazon.com/aws-sdk-php/v2/api/class-Aws.Ses.SesClient.html#_sendEmail

Что я делаю неправильно?
Заранее благодарим за предоставленную помощь.

Как реализовать заголовок List-Unsubscribe в сообщениях, отправленных AWS SES с помощью PHP SDK

require_once("./AWS/aws-sdk/aws-autoloader.php"); 

$config = array('credentials' => array('key' => $awsKey, 
             'secret' => $awsSecret), 
       'version' => 'latest', 
       'region' => 'us-east-1'); 

$client = \Aws\Ses\SesClient::factory($config); 

$to = '[email protected]'; 
$from = '[email protected]'; 
$subject = 'This is a test'; 
$text= 'This is a test'; 
$html= 'This is a <b>test</b>'; 
$replyTo = '[email protected]'; 

$message=array(
    // Source is required 
    'Source' => $from, 

    // Destination is required 
    'Destination' => array('ToAddresses' => array($to)), 

    // Message is required 
    'Message' => array(
     // Subject is required 
     'Subject' => array(
      // Data is required 
      'Data' => $subject, 
      'Charset' => 'UTF-8', 
     ), 
     // Body is required 
     'Body' => array(
      'Text' => array(
       // Data is required 
       'Data' => $text, 
       'Charset' => 'UTF-8', 
      ), 
      'Html' => array(
       // Data is required 
       'Data' => $html, 
       'Charset' => 'UTF-8', 
      ), 
     ), 
    ), 

    // reply To.. 
    'ReplyToAddresses' => array($replyTo), 

    // Is this correct?? 
    'AddHeaderAction' => array('header_name'=> "List-Unsubscribe", 
           'header_value'=> urlencode('<[email protected]>'))); 

try 
{ 
    $result = $client->sendEmail($message); 
    $messageID=$result->get('MessageId'); 
} 
catch (Exception $response) 
{ 
    die('error'); 
} 

echo 'message sent: '. $messageID; 

ответ

1

Попробуйте этот код он работал со мной, я не думаю, что вы можете использовать SendEmail функцию осуществить это.

public static function _sendMail($to, $subject, $body, $from) 
{ 
    $random_hash = 'site_' . md5(date('r', time())); 
    $emailtext = "Return-Path: <{$from}>" . "\r\n"; 
    $emailtext .= "Reply-To: <$from>" . "\r\n"; 
    $emailtext .= "From: YOUR NAME <{$from}>" . "\r\n"; 
    $emailtext .= 'To: ' . $to . "\r\n"; 
    $emailtext .= "Subject: {$subject}" . "\r\n"; 
    $emailtext .= "List-Unsubscribe: <mailto:[email protected]>". "\r\n"; 
    $emailtext .= 'Date: ' . date('D, j M Y H:i:s O') ."\r\n"; 
    $emailtext .= 'Message-ID: <njnjknjkr, time())),0,5) . -' . substr(md5(date('r', time())),0,5) .'-' . substr(md5(date('r', time())),0,5) . '@site.com>' ."\r\n"; 
    $emailtext .= "Content-Type: multipart/alternative; " . "\r\n"; 
    $emailtext .= "\t" . 'boundary="' . $random_hash . '"' . "\r\n"; 
    $emailtext .= 'MIME-Version: 1.0' ."\r\n\r\n"; 
    $emailtext .= '--' . $random_hash . "\r\n"; 
    $emailtext .= 'Content-Type: text/plain; charset=us-ascii' . "\r\n"; 
    $emailtext .= 'Content-Transfer-Encoding: 7bit' . "\r\n\r\n\r\n"; 
    $emailtext .= '--' . $random_hash . "\r\n"; 
    $emailtext .= 'Content-Type: text/html; charset=UTF-8' . "\r\n"; 
    $emailtext .= 'Content-Transfer-Encoding: quoted-printable' . "\r\n\r\n\r\n"; 
    $html = preg_replace("#(?<!\r)\n#si", "\r\n", $body) . "\r\n"; 
    $emailtext .= quoted_printable_encode($html); 
    $emailtext .= '--' . $random_hash . "--"; 

    $args = array(
     'Source' => $from, 
     'Destinations' => array($to), 
     'RawMessage' => array(
      'Data' => base64_encode($emailtext), 
     ), 
     'FromArn' => $from, 
     'SourceArn' => $from, 
     'ReturnPathArn' => $from, 
    ); 

    $client = SesClient::factory(array(
     'key' => self::$__accessKey, 
     'secret' => self::$__secretKey, 
     'region' => Region::US_EAST_1 
    )); 

    try { 
     return $client->sendRawEmail($args); 
    }catch (MessageRejectedException $mrEx){ 
     return $mrEx->getMessage(); 
    }catch (\Exception $ex){ 
     return $ex->getMessage(); 
    }}