【问题标题】:Sending HTML Mails from Amazon SES using PHP SDK使用 PHP 开发工具包从 Amazon SES 发送 HTML 邮件
【发布时间】:2013-05-12 12:28:45
【问题描述】:

我正在开发一项从 AWS SES 服务发送电子邮件的服务。我已经能够发送纯文本邮件,但在其中一种情况下我需要发送丰富的 HTML 邮件。这是我使用的代码:

header("MIME-Version: 1.0; Content-type: text/html; charset=iso-8859-1");

    require_once(dirname(__FILE__).'/AWSSDKforPHP/sdk.class.php');

// Instantiate the Amazon class
$ses = new AmazonSES();


$source = 'abc@www..com';

$dest = array('ToAddresses'=>array($to));

$message = CFComplexType::map(array('Subject.Data'=>$subject, 'Body.Html.Data'=>$message_mail));

$rSendEmail = $ses->send_email($source, $dest, $message);

message_mail 是一些放在表格中的 HTML 文本。 我已经尝试过 send_email 和 send_raw_email 但它们都没有工作。我需要做一些额外或不同的事情吗?

【问题讨论】:

    标签: php email sdk amazon-web-services amazon


    【解决方案1】:

    我知道这是个老问题,但仍在写一个答案。并希望它对将来的人有所帮助。

    $m = new SimpleEmailServiceMessage();
    $m->addTo('receiver email address');
    $m->setFrom('send email address');
    $m->setSubject('testing!');
    
    $body= '<b>Hello world</b>';
    $plainTextBody = '';
    
    $m->setMessageFromString($plainTextBody,$body);    
    print_r($ses->sendEmail($m));
    

    【讨论】:

      【解决方案2】:

      这对我有用(不使用 sdk 或 smtp):

      require_once('ses.php');
      
      $ses = new SimpleEmailService('accessKey', 'secretKey');
      
      $m = new SimpleEmailServiceMessage();
      $m->addTo('addressee@example.com');
      $m->setFrom('Name <yourmail@example.com>');
      $m->setSubject('You have got Email!');
      $m->setMessageFromString('Your message');
      $ses->sendEmail($m);
      

      你可以从http://www.orderingdisorder.com/aws/ses/获取ses.php

      【讨论】:

      【解决方案3】:

      我尝试使用 SES SDK,但使用起来并不容易。我最终使用 PHPMailer 通过 SMTP 连接到 SES。首先,从 Amazon SES 中设置 SMTP 访问,然后将这些行添加到 PHPMailer 以使其通过 TLS 连接到 SES:

      $mail = new PHPMailer();
      
      $mail->IsSMTP(true);
      $mail->SMTPAuth = true;
      $mail->Mailer = "smtp";
      $mail->Host= "tls://email-smtp.us-east-1.amazonaws.com";
      $mail->Port = 465;
      $mail->Username = "";  // SMTP username (Amazon Access Key)
      $mail->Password = "";  // SMTP Password (Amazon Secret Key)
      
      // ... the rest of PHPMailer code here ...
      

      PHPMailer 非常擅长丰富的电子邮件(带有文本回退)、嵌入的图像和附件。

      【讨论】:

      • 你在哪里粘贴你的访问密钥和秘密密钥?
      • 您的访问密钥和秘密只是 SMTP 用户名和密码字段!我更新了答案:)
      • 谢谢!顺便问一下,您认为哪个更快:SMTP 还是 Amazon API?
      • 我不确定,但 SMTP 很慢。我们的每个线程每秒只能发送大约 2 封电子邮件。如果您有时间设置 Amazon API,那么值得一试。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      相关资源
      最近更新 更多