使用 Amazon SES API 和第 3 AWS SDK for PHP 版授權寄件者 - AWS SDK for PHP

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon SES API 和第 3 AWS SDK for PHP 版授權寄件者

若要讓其他人AWS 帳戶、AWS Identity and Access Management使用者或AWS服務代表您透過 Amazon Simple Email Service (Amazon SES) 傳送電子郵件,您需要建立傳送授權政策。此為附加至您自有身分的 JSON 文件。

政策將明確列出您允許誰代表該身分傳送,以及有哪些傳送條件。除了您本人以及政策中明確授予許可的實體,其餘所有寄件者皆不得傳送電子郵件。一個身分可以沒有政策、有一個政策或有多個政策。您也可以使用含有多個陳述式的單一政策來達成多個政策的效果。

如需詳細資訊,請參閱透過 Amazon SES 使用傳送授權

下列範例示範如何:

所有的範例程式碼都可以AWS SDK for PHP在這裡取得 GitHub。

登入資料

在執行範例程式碼之前,請依照中的說明設定您的AWS認證憑證。然後匯入AWS SDK for PHP,如中所述基本使用

如需使用 Amazon SES 的詳細資訊,請參閱 Amazon SES 開發人員指南

建立授權寄件者

若要授權其他AWS 帳戶人代表您傳送電子郵件,請使用身分政策新增或更新授權,以便從您驗證的電子郵件地址或網域傳送電子郵件。若要建立身分識別原則,請使用此PutIdentityPolicy作業。

匯入

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

範例程式碼

$SesClient = new SesClient([ 'profile' => 'default', 'version' => '2010-12-01', 'region' => 'us-east-1' ]); $identity = "arn:aws:ses:us-east-1:123456789012:identity/example.com"; $other_aws_account = "0123456789"; $policy = <<<EOT { "Id":"ExampleAuthorizationPolicy", "Version":"2012-10-17", "Statement":[ { "Sid":"AuthorizeAccount", "Effect":"Allow", "Resource":"$identity", "Principal":{ "AWS":[ "$other_aws_account" ] }, "Action":[ "SES:SendEmail", "SES:SendRawEmail" ] } ] } EOT; $name = "policyName"; try { $result = $SesClient->putIdentityPolicy([ 'Identity' => $identity, 'Policy' => $policy, 'PolicyName' => $name, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

擷取授權寄件者的政策

傳回與特定的電子郵件身分或網域身分相關聯的傳送授權政策。若要取得指定電子郵件地址或網域的傳送授權,請使用此GetIdentityPolicy作業。

匯入

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

範例程式碼

$SesClient = new SesClient([ 'profile' => 'default', 'version' => '2010-12-01', 'region' => 'us-east-1' ]); $identity = "arn:aws:ses:us-east-1:123456789012:identity/example.com"; $policies = ["policyName"]; try { $result = $SesClient->getIdentityPolicies([ 'Identity' => $identity, 'PolicyNames' => $policies, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

列出授權寄件者

若要列出與目前AWS區域中特定電子郵件身分或網域身分識別相關聯的傳送授權原則,請使用ListIdentityPolicies作業。

匯入

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

範例程式碼

$SesClient = new SesClient([ 'profile' => 'default', 'version' => '2010-12-01', 'region' => 'us-east-1' ]); $identity = "arn:aws:ses:us-east-1:123456789012:identity/example.com"; try { $result = $SesClient->listIdentityPolicies([ 'Identity' => $identity, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

撤銷授權寄件者的權限

刪除與DeleteIdentityPolicy操作相關聯的身份策略,AWS 帳戶以刪除其他人發送帶有電子郵件身份或域身份的電子郵件的發送授權。

匯入

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

範例程式碼

$SesClient = new SesClient([ 'profile' => 'default', 'version' => '2010-12-01', 'region' => 'us-east-1' ]); $identity = "arn:aws:ses:us-east-1:123456789012:identity/example.com"; $name = "policyName"; try { $result = $SesClient->deleteIdentityPolicy([ 'Identity' => $identity, 'PolicyName' => $name, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }