2016-06-17 4 views
0

Я пытаюсь отправить электронное письмо с использованием SES и PHP SDK v3. Но это довольно сложно. Это, насколько я получил:Amazon Simple Email Service - необходимо отправить письмо

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

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

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

+0

Зачем голосовать за меня? Я искал часы для простого рабочего примера, но их просто не существует. –

+0

Возможно, вы имели в виду 'Aws \ Ses \ SesClient'? –

+0

Спасибо, я исправил, что –

ответ

3

Использование AWS API V2

Для начала необходимо настроить SES:

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

чем отправить по электронной почте:

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

Несколько вещей, чтобы отметить

  1. Вы должны подтвердить адрес электронной почты отправителя или адрес отправителя для использования SES.
  2. Если у вас нет Запросить доступ к продукции, вам необходимо подтвердить все приемники.
  3. Вы можете использовать любой PHP библиотеку для отправки с использованием SES, нет необходимости в AWS Апи
+0

, если адрес электронной почты не отправлен, есть ли способ получить ошибку, из-за которой он не был отправлен? –

+1

@AmyNeville В зависимости от того, что вы имеете в виду, «электронная почта не отправляется». Некоторые ошибки могут быть 'try {} catch''ed, некоторые из них недоступны (например, неправильный адрес электронной почты или что-то в этом роде). – Justinas

+0

Ах, я думаю, мне удалось отправить один - часть «проверить все получатели» была тем, что меня задело. Почему они не позволяют отправлять даже 200 писем с песочницей? Они слишком часто снимают этот спам! Это препятствует разработчикам! –

0

Я знаю, что вы спросили, как использовать в 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; 
    } 
} 
?>