2012-09-22 5 views
2

Я использую Amazon SES для отправки электронной почты, я хотел бы добавить к нему пользовательский заголовок, прежде чем он будет отправлен пользователям, так как я создаю прокси-почтовую систему для ответа на потоки на моем сайте, поэтому идентификатор хранится для отслеживания того, какой поток отправлять по электронной почте.Прикрепите собственный заголовок электронной почты для службы SAS Amazon

Я не могу видеть, как я могу подключить пользовательский заголовок из документации Amazon SES», кроме this page, который объясняет, что на заголовки они принимают, но не говорит, как связать его, я использую этот SES wrapper сделал для PHP.

Я хочу, чтобы иметь возможность ввести заголовок с именем X-Thread-ID с номером, как я продолжу это?


EDIT: Для ответа Джека, я не могу отправить по электронной почте должным образом, он продолжает давать мне эту ошибку:

CFSimpleXML Object 
(
    [Type] => Sender 
    [Code] => InvalidParameterValue 
    [Message] => Missing final '@domain' 
) 

Мои заголовки в точности как этот

To: [email protected] <YES> 
From: [email protected] <MySite> 
X-Thread-ID: 429038 

ответ

6

Я нахожусь не уверен, насколько вы привязаны к своей текущей оболочке, но я просто использую тот, который поставляется с SDK для Amazon для PHP, который можно загрузить с самой Amazon.

$ses = new AmazonSES(AWS_ACCESS_KEY, AWS_ACCESS_SECRET); 

$headers = join("\r\n", array(
    "To: $recipient", 
    "X-Thread-ID: 123test", 
)); 
$body = "<html><body> ... </body></html>"; 

$res = $ses->send_raw_email(array(
    'Data' => chunk_split(base64_encode("$headers\r\n\r\n$body")) 
), array()); 

// check API result 
if (!$res->isOK()) { 
    throw new Exception(print_r($res->body->Error, true)); 
} 
// inspect message id 
$messageId = (string)$res->body->SendRawEmailResult->MessageId 

Редактировать

Этот адрес электронной заголовок:

To: [email protected] <YES> 

Должно быть (в обратном порядке):

To: YES <[email protected]> 

двойные кавычки следует использовать для имен с пробелами.

+0

+1 для официального SDK. Быстро, легко и прямо из Амазонки. – ceejayoz

+0

@Jack У меня есть вопрос относительно ошибки, которую я испытываю. – MacMac

+0

Здравствуйте, не могли бы вы помочь? :-) – MacMac

0

Перемотка вперед до 2017 года, ответ сейчас (в соответствии с Amazon):

(ссылка: Send an Email by Accessing the Amazon SES SMTP Interface Programmatically)

<?php 

// Modify the path in the require statement below to refer to the 
// location of your Composer autoload.php file. 
require 'path_to_sdk_inclusion'; 

// Instantiate a new PHPMailer 
$mail = new PHPMailer; 

// Tell PHPMailer to use SMTP 
$mail->isSMTP(); 

// Replace [email protected] with your "From" address. 
// This address must be verified with Amazon SES. 
$mail->setFrom('[email protected]', 'Sender Name'); 

// Replace [email protected] with a "To" address. If your account 
// is still in the sandbox, this address must be verified. 
// Also note that you can include several addAddress() lines to send 
// email to multiple recipients. 
$mail->addAddress('[email protected]', 'Recipient Name'); 

// Replace smtp_username with your Amazon SES SMTP user name. 
$mail->Username = 'smtp_username'; 

// Replace smtp_password with your Amazon SES SMTP password. 
$mail->Password = 'smtp_password'; 

// Specify a configuration set. If you do not want to use a configuration 
// set, comment or remove the next line. 
$mail->addCustomHeader('X-SES-CONFIGURATION-SET', 'ConfigSet'); 

// If you're using Amazon SES in a region other than US West (Oregon), 
// replace email-smtp.us-west-2.amazonaws.com with the Amazon SES SMTP 
// endpoint in the appropriate region. 
$mail->Host = 'email-smtp.us-west-2.amazonaws.com'; 

// The port you will connect to on the Amazon SES SMTP endpoint. 
$mail->Port = 465; 

// The subject line of the email 
$mail->Subject = 'Amazon SES test (SMTP interface accessed using PHP)'; 

// The HTML-formatted body of the email 
$mail->Body = '<h1>Email Test</h1> 
    <p>This email was sent through the 
    <a href="https://aws.amazon.com/ses">Amazon SES</a> SMTP 
    interface using the <a href="https://github.com/PHPMailer/PHPMailer"> 
    PHPMailer</a> class.</p>'; 

// Tells PHPMailer to use SMTP authentication 
$mail->SMTPAuth = true; 

// Enable SSL encryption 
$mail->SMTPSecure = 'ssl'; 

// Tells PHPMailer to send HTML-formatted email 
$mail->isHTML(true); 

// The alternative email body; this is only displayed when a recipient 
// opens the email in a non-HTML email client. The \r\n represents a 
// line break. 
$mail->AltBody = "Email Test\r\nThis email was sent through the 
    Amazon SES SMTP interface using the PHPMailer class."; 

if(!$mail->send()) { 
    echo "Email not sent. " , $mail->ErrorInfo , PHP_EOL; 
} else { 
    echo "Email sent!" , PHP_EOL; 
} 
?> 

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

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