php - 使用 Amazon SES sendRawEmail 进行电子邮件编码

标签 php email amazon-web-services aws-sdk

我正在尝试使用 SES SDK 2.7 sendRawEmail 方法发送由 PHPMailer 5.2.9 生成的以下原始电子邮件消息:

Date: Tue, 28 Oct 2014 03:34:18 +0000
From: someemail@gmail.com
Reply-To: someemail@gmail.com
Message-ID: <c738074625a476ed8e2793323ad0b3b2@*.dev>
X-Priority: 3
X-Mailer: PHPMailer
MIME-Version: 1.0
Content-Type: multipart/alternative;
    boundary="b1_c738074625a476ed8e2793323ad0b3b2"
Content-Transfer-Encoding: 8bit
To: someperson@gmail.com
Subject: Test subject (TID #1, SID #2)

--b1_c738074625a476ed8e2793323ad0b3b2
Content-Type: text/plain; charset=us-ascii

Test email for _Some One_!


--b1_c738074625a476ed8e2793323ad0b3b2
Content-Type: text/html; charset=us-ascii

Test email for <i>Some One</i>!


--b1_c738074625a476ed8e2793323ad0b3b2--

这是用于生成原始电子邮件然后发送的代码:

$mail = new PHPMailer();

$mail->addAddress($to);
$mail->setFrom($from);
$mail->Subject = $subject;
$mail->CharSet = $char_set;
$mail->AltBody = $text;
$mail->Body = $html;
$mail->isHTML(true);
$mail->addAttachment($attachment);

$mail->preSend();

$args = [
    'Source'       => $from,
    'Destinations' => [$to],
    'RawMessage'   => [
        'Data' => $mail->getSentMIMEMessage()
    ]
];

$aws = Aws\Common\Aws::factory(app_path() . '/config/aws.php');

$ses = $aws->get('ses');

$send_result = $ses->sendRawEmail($args);

我在 $send_result 中没有发现任何错误,只有一个标准的“MessageId”和“RequestId”,就像我成功发送时一样(它确实发送了)。

我也尝试过使用和不使用附件,但发送的消息仍然是乱码。这是收到的: http://prntscr.com/50ij42

我在这里做错了什么?

最佳答案

你忘了编码数据:

'RawMessage'   => [
    'Data' => base64_encode( $mail->getSentMIMEMessage() )
]

来自 SDK documentation : ... - 如果 MIME 需要,内容必须采用 base64 编码。

关于php - 使用 Amazon SES sendRawEmail 进行电子邮件编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26601224/

相关文章:

html - 删除 anchor 下划线电子邮件签名

amazon-web-services - 无法可靠地确定服务器的完全限定域名,使用 172.17.0.2 作为 ServerName

amazon-web-services - Fargate 配置文件错误 : FargateECSTaskDefinition

javascript - 如何从 PHP 获取值到 ExtJs?

php - 在文件中搜索内容并使用 PHP 更改内容的最佳(最有效)方法是什么?

javascript - 如何将文本区域的内容添加到电子邮件正文

amazon-web-services - AWS ECS Fargate-任务未运行

PHP header 重定向在表单提交时不起作用

php - 将一个表的选定下拉值插入另一表

email - Jenkins 电子邮件插件 : Could not connect to SMTP host: smtp. gmail.com,端口:465;