2016-07-06 5 views
2

ich zur Zeit eine Ausnahme für, wenn eine Identität am Fang ist den folgenden Code nicht überprüft mit -Erhalten Sie Fehlercode für Ungeprüft Identitäten in Sendmail Ausnahme AWS SES PHP SDK

use Aws\Ses\SesClient; 
use Aws\Ses\Exception; 

try { 
     $result = $ses->sendEmail($data); 
} catch (Exception $e) { 

    echo $e->getResponse(); 

} 

es die folgenden ausdruckt -

PHP Fatal error: Uncaught exception 'Aws\Ses\Exception\SesException' 
with message 'Error executing "SendEmail" on "https://email.us- 
west-2.amazonaws.com"; AWS HTTP error: Client error: `POST 
https://email.us-west-2.amazonaws.com` resulted in a `400 Bad Request` 
response: 

<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/"> 
    <Error> 
    <Type>Sender</Type> 
    <Code>MessageReje (truncated...) 
    MessageRejected (client): Email address is not verified. The 
following identities failed the check in region US-WEST-2: 
arn:aws:ses:us-west-2:**************** - <ErrorResponse 
xmlns="http://ses.amazonaws.com/doc/2010-12-01/"> 
    <Error> 
    <Type>Sender</Type> 
    <Code>MessageRejected</Code> 
    <Message>Email address is not verified. The following identities 
failed the check in region US-WEST-2: arn:aws:ses:us- 
west-2:************</Message> 
    </Error> 
    <RequestId>*****************</RequestId> 
</ErrorResponse> 

exception 'GuzzleHttp\Exception\ClientException' with in /var/www 
/html/data/aws/Aws/WrappedHttpHandler.php on line 159 

ich kann keine der Methoden, die auf der folgenden Seite erläutert bekommen unterschiedliche etwas auszudrucken -

http://docs.aws.amazon.com/aws-sdk-php/v2/api/class-Aws.Ses.Exception.SesException.html

Irgendwelche Ideen, wie ich einen tatsächlichen Fehlercode aus dieser Ausnahme bekommen kann, so dass ich im Rest meines Skripts die entsprechenden Maßnahmen ergreifen kann?

+0

Dies kann helfen http://stackoverflow.com/questions/22128800/amazon-ses-email-address-is-not-verified –

+0

Sind Sie sicher, dass Sie den richtigen Namespace verwenden? 'Aws \ Ses \ Exception \ SesException' wird in der Dokumentation angezeigt. Vielleicht möchten Sie die Exception als "@Dekel-Hinweise" bezeichnen. Da Sie Namespacing 'Aws \ Ses \ Exception' haben, können Sie versuchen, nach' SesException' zu suchen und dort zu reagieren. – CGSmith105

Antwort

0

Um alle Ausnahmen zu fangen Sie besser nutzen

} catch (\Exception $e) { 

Um sicherzustellen, dass Sie nicht die falsche Exception Klasse aus dem falschen Namensraum erhalten.

In Bezug auf das Problem, dass Sie schlagen - wenn Amazon SES mit E-Mails zuerst verify your email/domain müssen senden (beachten Sie, dass jede von From, source, sender, return-path Header Sie ein Problem verursachen kann, wenn nicht überprüft).

Wenn Sie einige Informationen bezüglich Ihres $ses Objekts oder des $data veröffentlichen können, das Sie verwenden, könnte es helfen.

0

Class MessageRejectedException Zeigt an, dass die Aktion fehlgeschlagen ist und die Nachricht nicht gesendet werden konnte. Überprüfen Sie den Fehlerstapel für weitere Informationen darüber, was den Fehler verursacht hat.

Exception 
    Extended by RuntimeException 
     Extended by Aws\Common\Exception\RuntimeException implements Aws\Common\Exception\AwsExceptionInterface 
      Extended by Aws\Common\Exception\ServiceResponseException 
       Extended by Aws\Ses\Exception\SesException 
        Extended by Aws\Ses\Exception\MessageRejectedException 

Versuchen Sie, diese -> verwenden Aws \ Ses \ Exception \ MessageRejectedException; oder verwenden Sie Aws \ Ses \ Exception \ SesException; und ersetzen Klassenname in Catche-Block

Bcause Aws \ Ses \ Exception ist Namespace der Klasse MessageRejectedException. Sie müssen Klasse mit Namespace verwenden, nicht nur Namespace.

use Aws\Ses\SesClient; 
use Aws\Ses\Exception\MessageRejectedException; 

try { 
     $result = $ses->sendEmail($data); 
} catch (MessageRejectedException $e) { 

    echo $e->getResponse(); 

} 

Ich hoffe, geholfen. Viel Glück