适用于 PHP 的 AWS 开发工具包
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 Amazon SES API 和AWS SDK for PHP版本 3 创建自定义电子邮件模板

Amazon Simple Email Service (Amazon SES) 让您可以通过使用电子邮件模板,向各个收件人发送个性化的电子邮件。模板包含一个主题行以及电子邮件正文的文本和 HTML 部分。主题和正文部分还可包含针对每个收件人进行个性化设置的唯一值。

有关更多信息,请参阅 Amazon SES Developer Guide中的使用 Amazon SES 发送个性化电子邮件

以下示例演示如何:

GitHub 上的此处提供了AWS SDK for PHP版本 3 的所有示例代码。

凭证

在运行示例代码之前,您需要配置 AWS 凭证,如适用于 PHP 的 AWS 开发工具包版本 3 的凭证中所述。然后导入AWS SDK for PHP,如适用于 PHP 的 AWS 开发工具包版本 3 的基本使用模式中所述。

有关使用 Amazon SES 的更多信息,请参阅 Amazon SES 开发人员指南

创建电子邮件模板

要创建模板以发送个性化电子邮件,请使用 CreateTemplate 操作。在该模板所添加到的 AWS 区域中,模板可由授权发送电子邮件的任意账户使用。

注意

Amazon SES 不验证您的 HTML,因此请先确保 HtmlPart 有效,然后再发送电子邮件。

导入

require 'vendor/autoload.php'; use Aws\Ses\SesClient; use Aws\Exception\AwsException;

示例代码

$SesClient = new Aws\Ses\SesClient([ 'profile' => 'default', 'version' => '2010-12-01', 'region' => 'us-east-2' ]); $name = 'Template_Name'; $html_body = '<h1>AWS Amazon Simple Email Service Test Email</h1>' . '<p>This email was sent with <a href="https://aws.amazon.com/ses/">' . 'Amazon SES</a> using the <a href="https://aws.amazon.com/sdk-for-php/">' . 'AWS SDK for PHP</a>.</p>'; $subject = 'Amazon SES test (AWS SDK for PHP)'; $plaintext_body = 'This email was send with Amazon SES using the AWS SDK for PHP.'; try { $result = $SesClient->createTemplate([ 'Template' => [ 'HtmlPart' => $html_body, 'SubjectPart' => $subject, 'TemplateName' => $name, 'TextPart' => $plaintext_body, ], ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

获取电子邮件模板

要查看现有电子邮件模板(包括主题行、HTML 正文和纯文本)的内容,请使用 GetTemplate 操作。只有 TemplateName 为必填。

导入

require 'vendor/autoload.php'; use Aws\Ses\SesClient; use Aws\Exception\AwsException;

示例代码

$SesClient = new Aws\Ses\SesClient([ 'profile' => 'default', 'version' => '2010-12-01', 'region' => 'us-east-2' ]); $name = 'Template_Name'; try { $result = $SesClient->getTemplate([ 'TemplateName' => $name, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

列出所有电子邮件模板

要检索当前 AWS 区域中与您 AWS 账户关联的所有电子邮件模板,请使用 ListTemplates 操作。

导入

require 'vendor/autoload.php'; use Aws\Ses\SesClient; use Aws\Exception\AwsException;

示例代码

$SesClient = new Aws\Ses\SesClient([ 'profile' => 'default', 'version' => '2010-12-01', 'region' => 'us-east-2' ]); try { $result = $SesClient->listTemplates([ 'MaxItems' => 10, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

更新电子邮件模板

要更改特定电子邮件模板(包括主题行、HTML 正文和纯文本)的内容,请使用 UpdateTemplate 操作。

导入

require 'vendor/autoload.php'; use Aws\Ses\SesClient; use Aws\Exception\AwsException;

示例代码

$SesClient = new Aws\Ses\SesClient([ 'profile' => 'default', 'version' => '2010-12-01', 'region' => 'us-east-2' ]); $name = 'Template_Name'; $html_body = '<h1>AWS Amazon Simple Email Service Test Email</h1>' . '<p>This email was sent with <a href="https://aws.amazon.com/ses/">' . 'Amazon SES</a> using the <a href="https://aws.amazon.com/sdk-for-php/">' . 'AWS SDK for PHP</a>.</p>'; $subject = 'Amazon SES test (AWS SDK for PHP)'; $plaintext_body = 'This email was send with Amazon SES using the AWS SDK for PHP.'; try { $result = $SesClient->updateTemplate([ 'Template' => [ 'HtmlPart' => $html_body, 'SubjectPart' => $subject, 'TemplateName' => $name, 'TextPart' => $plaintext_body, ], ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

删除电子邮件模板

要删除特定电子邮件模板,请使用 DeleteTemplate 操作。您只需要 TemplateName。

导入

require 'vendor/autoload.php'; use Aws\Ses\SesClient; use Aws\Exception\AwsException;

示例代码

$SesClient = new Aws\Ses\SesClient([ 'profile' => 'default', 'version' => '2010-12-01', 'region' => 'us-east-2' ]); $name = 'Template_Name'; try { $result = $SesClient->deleteTemplate([ 'TemplateName' => $name, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

使用模板发送电子邮件

要使用模板向收件人发送电子邮件,请使用 SendTemplatedEmail 操作。

导入

require 'vendor/autoload.php'; use Aws\Ses\SesClient; use Aws\Exception\AwsException;

示例代码

$SesClient = new Aws\Ses\SesClient([ 'profile' => 'default', 'version' => '2010-12-01', 'region' => 'us-east-2' ]); $template_name = 'Template_Name'; $sender_email = 'email_address'; $recipient_emails = ['email_address']; try { $result = $SesClient->sendTemplatedEmail([ 'Destination' => [ 'ToAddresses' => $verified_recipient_emails, ], 'ReplyToAddresses' => [$sender_email], 'Source' => $sender_email, 'Template' => $template_name, 'TemplateData' => '{ }' ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }