如何解决预期/得到;发送带有附件的 SES 电子邮件时出错
使用 PHP 发送 SES 电子邮件时,无论我使用 SMTP 终端节点还是 AWS 开发工具包,我在发送带有附件的原始电子邮件时都会收到类似的错误。 AWS forums 和 Wordpress plugin 中也报告了类似的错误。当我省略附件时,电子邮件每次发送都没有问题。
通过 SMTP 我收到以下错误:
554 Transaction Failed: Expected '/',got null
使用 SDK ("aws/aws-sdk-PHP": "^3.178"
) 时,我收到以下信息:
exception 'Aws\Ses\Exception\SesException' with message 'Error executing "SendRawEmail" on "https://email.eu-west-2.amazonaws.com"; AWS HTTP error: Client error: `POST https://email.eu-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>InvalidPara (truncated...)
InvalidParameterValue (client): Expected '/',got ; - <ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
<Error>
<Type>Sender</Type>
<Code>InvalidParameterValue</Code>
<Message>Expected '/',got ;</Message>
</Error>
<RequestId>abc123-abc1-abc1-abc1-abc123acb123</RequestId>
</ErrorResponse>
我正在使用 PHPMailer 发送消息:
// Prepare mime message
$mail = new PHPMailer();
$mail->setFrom($user['email'],$user['full_name']);
$mail->addAddress($recipient);
$mail->Subject = $entity['title'];
$mail->isHTML(true);
$mail->Body = $entity['body'];
$mail->addStringAttachment(
'My DOMPDF content','attachment.pdf',PHPMailer::ENCODING_BASE64,'pdf'
);
$mail->preSend();
$raw = $mail->getSentMIMEMessage();
// Prepare SES client
$ses = new SesClient([
'version' => '','region' => 'eu-west-2'
]);
// Send email
$ses->sendRawEmail([
'RawMessage' => [
'Data' => $raw,],]);
解决方法
应该使用application/pdf
作为内容类型而不是pdf
,否则附件添加为:
--b1_IUbTPYYE0RFpfwGdeVX4Ggi2ErEKTd6JwKwjRJzEtE
Content-Type: pdf; name=attachmentpdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=attachment.pdf
代替:
--b1_EPhqEYFUvxbgyaVbkH4eNDQXBxsXAJpRwTMMkcTY
Content-Type: application/pdf; name=attachment.pdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=attachment.pdf
验证错误出现在需要正斜杠的内容类型上:doh:。
$mail->addStringAttachment(
'My DOMPDF content','attachment.pdf',PHPMailer::ENCODING_BASE64,'application/pdf'
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。