Amazon Simple Email Service - 需要发送邮件

Amazon Simple Email Service - Need to send email

我正在尝试使用 SES 和 PHP SDK v3 发送电子邮件。但事实证明这相当困难。据我所知:

require_once '/src/aws/aws-autoloader.php';

$ses = new Aws\Ses\SesClient([
    'version' => 'latest',
    'region'  => 'us-east-1',
    'credentials' => [
        'key'    => 'mykeyhere',
        'secret' => 'mysecrethere',
    ],
]);

我试过从各种指南中复制代码,但 none 似乎有效。有人可以告诉我如何使用 php 发送电子邮件吗?

使用AWS API V2

首先设置您的 SES:

$ses = Aws\Ses\SesClient::factory([
    'key' => 'AWS_KEY',
    'secret' => 'AWS_SECRET_KEY',
    'region' => 'us-east-1'
]);

比发送电子邮件:

$ses->sendEmail([
    'Source' => 'from@email.com',
    'Destination' => [
        'ToAddresses' => array('to@email.com')
    ],
    'Message' => array(
        'Subject' => [
            'Data' => 'SES Testing',
            'Charset' => 'UTF-8',
        ],
        'Body' => [
            'Html' => [
                'Data' => '<b>My HTML Email</b>',
                'Charset' => 'UTF-8',
            ],
        ],
    ),
]);

注意事项

  1. 您必须验证发件人电子邮件或发件人 url 才能使用 SES。
  2. 如果您不请求生产访问权限,那么您必须验证所有收件人 电子邮件。
  3. 您可以使用任何 PHP 库通过 SES 发送,不需要 AWS Api

我知道您问过如何在 SES 中使用 API,但我使用 PHPMailer 来完成此任务。结果将相同。

<?php
    require (dirname(__FILE__) . '/phpmailer/PHPMailerAutoload.php');

    if ($_SERVER['REQUEST_METHOD'] == "POST")  {
        $name    = $_POST['name'];      
        $email   = $_POST['email'];
        $msg     = $_POST['message'];

        // send email
        $mail = new PHPMailer();
        $mail->isSMTP();     
        $mail->isHTML(false);       
        $mail->Host = 'email-smtp.us-west-2.amazonaws.com';  // Or put your zone here
        $mail->Port = 587;
        $mail->SMTPAuth = true;        
        $mail->SMTPSecure = "tls";          
        $mail->Username = 'mykeyhere';                          
        $mail->Password = 'mysecrethere';  

        $mail->setFrom('<email added in ses>', "$name");
        $mail->addAddress('<destination email>');    

        $mail->Subject = "design2co.de";
        $mail->Body    = "Nome: $name \n" .
                         "Email: $email \n" .
                         "Mensagem: $msg \n";

        if(!$mail->send()) {
            echo json_encode(array("status" => 404));
        } else {
            echo json_encode(array("status" => 200));
            exit;
    }
} 
?>