2016-06-17 11 views
0

Ich versuche, eine E-Mail mit SES und dem PHP SDK v3 zu senden. Aber es erweist sich als ziemlich schwierig. Dies ist so weit ich habe:Amazon Simple Email Service - Müssen Sie E-Mail senden

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

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

Ich habe versucht, aus verschiedenen Führern Kopieren Code, aber nichts davon scheint zu funktionieren. Kann mir jemand zeigen, wie man eine E-Mail mit PHP sendet?

+0

Warum mich ablehnen? Ich habe Stunden für ein einfaches Arbeitsbeispiel gesucht, aber sie existieren einfach nicht. –

+0

Vielleicht meintest du 'Aws \ Ses \ SesClient'? –

+0

Danke, dass ich das behoben –

Antwort

3

Mit AWS API V2

zuerst Ihre SES ein:

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

als E-Mail senden:

$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', 
      ], 
     ], 
    ), 
]); 

Nur wenige Dinge zu beachten

  1. Sie müssen Ihre Absender-E-Mail oder Absender-URL für die Verwendung von SES bestätigen.
  2. Wenn Sie nicht Anfrage Produktionszugriff, dann müssen Sie alle Empfänger E-Mails zu überprüfen. mit SES zu senden, keine Notwendigkeit für AWS Api
  3. Sie können jede beliebige PHP-Bibliothek verwenden
+0

wenn E-Mail nicht gesendet wird, gibt es eine Möglichkeit, den Fehler zu erhalten, der es nicht gesendet verursacht? –

+1

@AmyNeville Hängt davon ab, was du meinst "E-Mail wird nicht gesendet". Einige Fehler können "tray {} catch" sein, andere nicht (wie eine falsche E-Mail-Adresse oder Ähnliches). – Justinas

+0

Ah, ich glaube, ich habe es geschafft, einen zu senden - der Teil "Verifiziere alle Empfänger" war, was mich ratlos gemacht hatte. Warum können Sie nicht sogar 200 E-Mails mit Sandbox senden? Sie nehmen diesen Anti-Spam zu weit! Es behindert Entwickler! –

0

Ich weiß, Sie gefragt, wie in SES-API verwenden, aber ich benutze PHPMailer für diese Aufgabe. Ergebnis wird gleich sein.

<?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; 
    } 
} 
?>