Ram*_*pta 1 php amazon-web-services aws-sdk
我试图使用 PHP AWS SES 最新 SDK 3.33 将文件作为附件发送。
搜索解决方案后,我从这里得到了答案,但这适用于较旧版本的 AWS SDK,而不适用于当前版本。
AWS提供两个API方法
sendEmail和sendRawEmail,sendRawEmail用来发送文件作为附件的电子邮件。
所以下面是最新的 AWS SDK 3.33 的更新代码
require __DIR__ . '/aws/vendor/autoload.php';
$s3_config = [
'region' => 'us-east-1',
'version' => 'latest',
'credentials' => [
'key' => '<keyxxx>',
'secret' => '<secretxxx>'
]
];
$aws = new \Aws\Sdk($s3_config);
$client = $aws->createSes();
$content = "";
$filename = "";
$mailto = "to@test.com"
$content = file_get_contents($file);
$content = chunk_split(base64_encode($content));
$filename = basename($file);
$subject = "Test Email";
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$FILEINFO_MIME_TYPE = finfo_file($finfo, $file);
try {
$separator = md5(time());
$separator_multipart = md5($subject . time());
$message = "MIME-Version: 1.0\n";
$message .= "Subject: $subject\n";
$message .= "From: Test Name <from@test.com>\n";
$message .= "To: $mailto\n";
$message .= "Content-Type: multipart/mixed; boundary=\"$separator_multipart\"\n";
$message .= "\n--$separator_multipart\n";
$message .= "Content-Type: multipart/alternative; boundary=\"$separator\"\n";
$message .= "\n--$separator\n";
$message .= "Content-Type: text/plain; charset=\"UTF-8\"\n";
$message .= "\n$body\n";
$message .= "\n--$separator--\n";
$message .= "--$separator_multipart\n";
$message .= "Content-Type: $FILEINFO_MIME_TYPE; name=\"$filename\"\n";
$message .= "Content-Disposition: attachment; filename=\"$filename\"\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "$content\n";
$message .= "--$separator_multipart--";
$result = $client->sendRawEmail([
'RawMessage' => [
'Data' => $message
]
]);
echo "\nEmail Sent\n";
} catch (\Exception $e) {
echo $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1788 次 |
| 最近记录: |