使用 Amazon SES API 和第 3 AWS SDK for PHP 版建立和管理電子郵件規則 - AWS SDK for PHP

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

使用 Amazon SES API 和第 3 AWS SDK for PHP 版建立和管理電子郵件規則

除了傳送電子郵件之外,您還可以透過 Amazon SES 簡易電子郵件服務接收電子郵件。接收規則可讓您指定 Amazon SES 針對您擁有的電子郵件地址或網域收到的電子郵件執行的動作。規則可以傳送電子郵件至其他AWS服務,包括但不限於 Amazon S3、Amazon SNS 或AWS Lambda。

如需詳細資訊,請參閱管理 Amazon SES 電子郵件接收的接收規則集和管理 Amazon SES 電子郵件接收的接收規則。

下列範例示範如何:

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

登入資料

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

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

建立接收規則集

接收規則集包含一組接收規則。您的帳戶必須至少有一個關聯的接收規則集,您才能建立接收規則。若要建立收貨規則集,請提供唯一的 RuleSetName 並使用該CreateReceiptRuleSet作業。

匯入

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

範例程式碼

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

建立接收規則

透過為現有的接收規則集新增接收規則,控制您的內送電子郵件。此範例說明如何建立將內送訊息傳送到 Amazon S3 儲存貯體的接收規則,但您也可以將訊息傳送至 Amazon SNS 和AWS Lambda。若要建立接收規則,請提供規則與 RuleSetName 給CreateReceiptRule作業。

匯入

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

範例程式碼

$SesClient = new Aws\Ses\SesClient([ 'profile' => 'default', 'version' => '2010-12-01', 'region' => 'us-east-2' ]); $rule_name = 'Rule_Name'; $rule_set_name = 'Rule_Set_Name'; $s3_bucket = 'Bucket_Name'; try { $result = $SesClient->createReceiptRule([ 'Rule' => [ 'Actions' => [ [ 'S3Action' => [ 'BucketName' => $s3_bucket, ], ], ], 'Name' => $rule_name, 'ScanEnabled' => true, 'TlsPolicy' => 'Optional', 'Recipients' => ['<string>'] ], 'RuleSetName' => $rule_set_name, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

描述接收規則集

每秒傳回一次指定的接收規則集的詳細資訊。若要使用DescribeReceiptRuleSet作業,請提供 RuleSetName.

匯入

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

範例程式碼

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

描述收款規則

傳回指定的接收規則的詳細資訊。若要使用DescribeReceiptRule作業,請提供 RuleName 與 RuleSetName。

匯入

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

範例程式碼

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

列出所有收貨規則集

若要列出目前「AWS區域」下存在的AWS 帳戶收貨規則集,請使用此ListReceiptRuleSets作業。

匯入

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

範例程式碼

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

更新收款規則

此範例說明如何更新傳送內送訊息至AWS Lambda函數的接收規則,但您也可以將訊息傳送至 Amazon SNS 和 Amazon S3。若要使用UpdateReceiptRule作業,請提供新的接收規則和 RuleSetName。

匯入

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

範例程式碼

$SesClient = new Aws\Ses\SesClient([ 'profile' => 'default', 'version' => '2010-12-01', 'region' => 'us-east-2' ]); $rule_name = 'Rule_Name'; $rule_set_name = 'Rule_Set_Name'; $lambda_arn = 'Amazon Resource Name (ARN) of the AWS Lambda function'; $sns_topic_arn = 'Amazon Resource Name (ARN) of the Amazon SNS topic'; try { $result = $SesClient->updateReceiptRule([ 'Rule' => [ 'Actions' => [ 'LambdaAction' => [ 'FunctionArn' => $lambda_arn, 'TopicArn' => $sns_topic_arn, ], ], 'Enabled' => true, 'Name' => $rule_name, 'ScanEnabled' => false, 'TlsPolicy' => 'Require', ], 'RuleSetName' => $rule_set_name, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

刪除收款規則集

移除所指定而目前未停用的接收規則集。如此亦將刪除其包含的所有接收規則。若要刪除收貨規則集,請提供 RuleSetName 給DeleteReceiptRuleSet作業。

匯入

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

範例程式碼

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

刪除接收規則

若要刪除指定的接收規則,請將 RuleName 和提供 RuleSetName 給DeleteReceiptRule作業。

匯入

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

範例程式碼

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