sunaoka / laravel-ses-template-driver
为 Laravel 提供的 Amazon SES 模板邮件驱动程序。
v4.1.1
2024-08-30 01:59 UTC
Requires
- php: ^8.1
- ext-json: *
- ext-mbstring: *
- aws/aws-sdk-php: ^3.245.0
- illuminate/console: ^10.0 || ^11.0
- illuminate/mail: ^10.0 || ^11.0
Requires (Dev)
- larastan/larastan: ^2.9.8
- laravel/pint: ^1.17.2
- orchestra/testbench: ^8.26.0 || ^9.4.0
- phpstan/phpstan: ^1.12.0
- dev-develop
- v4.1.1
- v4.1.0
- dev-main / 4.0.x-dev
- v4.0.0
- v3.x-dev
- v3.4.0
- v3.3.1
- v3.3.0
- v3.2.0
- v3.1.0
- v3.0.1
- v3.0.0
- v2.x-dev
- v2.2.0
- v2.1.0
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.x-dev
- v1.5.0
- v1.4.0
- v1.3.5
- v1.3.4
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.1
- v1.0.0
- v0.0.4
- v0.0.3
- v0.0.2
- v0.0.1
This package is auto-updated.
Last update: 2024-08-30 02:00:33 UTC
README
一个支持使用 Amazon SES API 发送个性化电子邮件的模板 的邮件驱动程序。
支持政策
(*1) 支持的 Amazon SES 模板邮件驱动程序(此驱动程序)版本
(*2) 支持的 Laravel 版本
(*3) 支持的 PHP 版本
安装
composer require sunaoka/laravel-ses-template-driver
接下来,在 config/mail.php
和 config/services.php
中设置以下内容。
config/mail.php
'default' => 'sestemplate', 'mailers' => [ 'sestemplate' => [ 'transport' => 'sestemplate', // or `sesv2template` - When using Amazon SES API v2 ], ],
config/services.php
'ses' => [ 'key' => 'your-ses-key', 'secret' => 'your-ses-secret', 'region' => 'ses-region', // e.g. us-east-1 ],
如果您在执行 SES SendTemplatedEmail
请求时需要包含 附加选项,您可以在 ses
配置中定义一个 options
数组。
'ses' => [ 'key' => 'your-ses-key', 'secret' => 'your-ses-secret', 'region' => 'ses-region', // e.g. us-east-1 'options' => [ 'ConfigurationSetName' => 'MyConfigurationSet', 'Tags' => [ [ 'Name' => 'foo', 'Value' => 'bar', ], ], ], ],
基本用法
use Illuminate\Support\Facades\Mail; use Sunaoka\LaravelSesTemplateDriver\Mail\SesTemplate; class Foo { public function sendmail() { $templateName = 'MyTemplate'; $templateData = [ 'name' => 'Alejandro', 'favoriteanimal' => 'alligator', ]; $result = Mail::to('alejandro.rosalez@example.com') ->cc('cc@example.com') ->bcc('bcc@example.com') ->send(new SesTemplate($templateName, $templateData)); echo $result->getMessageId(); // Message-ID overwritten by Amazon SES } }
选项
设置 From
、Reply-To
和自定义标题。
use Illuminate\Mail\Mailables\Address; use Illuminate\Support\Facades\Mail; use Sunaoka\LaravelSesTemplateDriver\Mail\SesTemplate; use Sunaoka\LaravelSesTemplateDriver\Mail\SesTemplateOptions; class Foo { public function sendmail() { $templateName = 'MyTemplate'; $templateData = [ 'name' => 'Alejandro', 'favoriteanimal' => 'alligator', ]; $options = new SesTemplateOptions(); $options->from(new Address('alejandro.rosalez@example.com', 'Alejandro Rosalez')) ->replyTo(new Address('alejandro.rosalez@example.com')); // Only with Amazon SES API v2 ('transport' is `sesv2template`) $options->header('X-Custom-Header1', 'Custom Value 1') ->header('X-Custom-Header2', 'Custom Value 2'); // You can also set it in the constructor. $options = new SesTemplateOptions( from: new Address('alejandro.rosalez@example.com', 'Alejandro Rosalez'), replyTo: new Address('alejandro.rosalez@example.com'), headers: [ 'X-Custom-Header1' => 'Custom Value 1', 'X-Custom-Header2' => 'Custom Value 2', ], ); $result = Mail::to('alejandro.rosalez@example.com') ->cc('cc@example.com') ->bcc('bcc@example.com') ->send(new SesTemplate($templateName, $templateData, $options)); echo $result->getMessageId(); // Message-ID overwritten by Amazon SES } }
向单个目的地发送模板邮件
{ "Template": { "TemplateName": "MyTemplate", "SubjectPart": "Greetings, {{name}}!", "HtmlPart": "<h1>Hello {{name}},</h1><p>Your favorite animal is {{favoriteanimal}}.</p>", "TextPart": "Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}." } }
不支持,向多个目的地发送模板邮件。
Artisan 控制台命令
列出当前 AWS 区域中 Amazon SES 账户中存在的电子邮件模板。
选项
php artisan ses-template:list-templates --help
Description:
Lists the email templates present in your Amazon SES account in the current AWS Region
Usage:
ses-template:list-templates [options]
Options:
--name Sort by the name of the template [default]
--time Sort by the time and date the template was created
--asc Sort by ascending order [default]
--desc Sort by descending order
--json The output is formatted as a JSON string
输出文本格式
php artisan ses-template:list-templates
+----+-------------+---------------------------+
| No | Name | Created At |
+----+-------------+---------------------------+
| 0 | MyTemplate | 2020-11-24T15:01:21+00:00 |
| 1 | MyTemplate2 | 2020-11-24T15:01:25+00:00 |
+----+-------------+---------------------------+
Enter a number to display the template object:
> 0
TemplateName:
MyTemplate
SubjectPart:
Greetings, {{name}}!
TextPart:
Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}.
HtmlPart:
<h1>Hello {{name}},</h1><p>Your favorite animal is {{favoriteanimal}}.</p>
输出 JSON 格式
php artisan ses-template:list-templates --json
{ "TemplatesMetadata": [ { "Name": "MyTemplate", "CreatedTimestamp": "2020-11-24T15:01:21+00:00" }, { "Name": "MyTemplate2", "CreatedTimestamp": "2020-11-24T15:01:25+00:00" } ] }
Amazon SES API v2
{ "TemplatesMetadata": [ { "TemplateName": "MyTemplate", "CreatedTimestamp": "2020-11-24T15:01:21+00:00" }, { "TemplateName": "MyTemplate2", "CreatedTimestamp": "2020-11-24T15:01:25+00:00" } ] }
显示您指定的模板的模板对象
选项
php artisan ses-template:get-template --help
Description:
Displays the template object for the template you specify
Usage:
ses-template:get-template [options] [--] <TemplateName>
Arguments:
TemplateName The name of the template to retrieve
Options:
--json The output is formatted as a JSON string
输出文本格式
php artisan ses-template:get-template MyTemplate
TemplateName:
MyTemplate
SubjectPart:
Greetings, {{name}}!
TextPart:
Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}.
HtmlPart:
<h1>Hello {{name}},</h1><p>Your favorite animal is {{favoriteanimal}}.</p>
输出 JSON 格式
php artisan ses-template:get-template MyTemplate --json
{ "Template": { "TemplateName": "MyTemplate", "SubjectPart": "Greetings, {{name}}!", "HtmlPart": "<h1>Hello {{name}},</h1><p>Your favorite animal is {{favoriteanimal}}.</p>", "TextPart": "Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}." } }
Amazon SES API v2
{ "Template": { "TemplateName": "MyTemplate", "TemplateContent": { "Subject": "Greetings, {{name}}!", "Html": "<h1>Hello {{name}},</h1><p>Your favorite animal is {{favoriteanimal}}.</p>", "Text": "Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}." } } }
AWS 身份和访问管理 (IAM) 策略
Amazon SES API (v1)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ses:SendTemplatedEmail", "ses:ListTemplates", "ses:GetTemplate" ], "Resource": "*" } ] }
Amazon SES API v2
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ses:SendEmail", "ses:ListEmailTemplates", "ses:GetEmailTemplate" ], "Resource": "*" } ] }