我目前正在捕获使用以下代码验证身份时的异常 -
use Aws\Ses\SesClient;
use Aws\Ses\Exception;
try {
$result = $ses->sendEmail($data);
} catch (Exception $e) {
echo $e->getResponse();
}
打印出以下内容 -
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
我无法获得下一页中列出的任何方法来打印出任何不同的方法 -
http://docs.aws.amazon.com/aws-sdk-php/v2/api/class-Aws.Ses.Exception.SesException.html
我是如何从这个异常中获取实际错误代码的任何想法,以便我可以在我的其余脚本中采取适当的操作?
答案 0 :(得分:0)
为了捕获所有异常,最好使用
} catch (\Exception $e) {
确保您没有从错误的命名空间中获取错误的Exception
类。
关于您遇到的问题 - 使用Amazon SES发送电子邮件时,您必须先verify your email/domain(请注意,如果未经过验证,任何From, source, sender, return-path
标头都会导致您出现问题)。
如果您可以发布有关您的$ses
对象或您使用的$data
的一些信息,则可能有所帮助。
答案 1 :(得分:0)
Class MessageRejectedException 表示操作失败,无法发送消息。检查错误堆栈以获取有关错误原因的更多信息。
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
试试这个 - &gt;使用Aws \ Ses \ Exception \ MessageRejectedException; 或使用Aws \ Ses \ Exception \ SesException;并将类名替换为catche块
因为Aws \ Ses \ Exception是类MessageRejectedException的命名空间。 你必须使用带有命名空间的类,而不仅仅是命名空间。
use Aws\Ses\SesClient;
use Aws\Ses\Exception\MessageRejectedException;
try {
$result = $ses->sendEmail($data);
} catch (MessageRejectedException $e) {
echo $e->getResponse();
}
我希望有所帮助。 祝你好运