sprintcube / cakephp-sendgrid
CakePHP 4 的 SendGrid 插件 - 使用 SendGrid API 发送电子邮件
Requires
- php: >=7.2
- cakephp/cakephp: ^4.0.0
Requires (Dev)
- cakephp/cakephp-codesniffer: ^4.0
- codacy/coverage: ^1.4
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^8.5 || ^9.3
This package is auto-updated.
Last update: 2024-09-04 07:11:30 UTC
README
本插件提供使用 SendGrid 进行电子邮件发送的功能。
此分支适用于 CakePHP 4.0 及以上版本。对于 CakePHP 3,请使用 cake-3.x 分支。
需求
此插件有以下需求
- CakePHP 4.0 或更高版本。
- PHP 7.2 或更高版本。
安装
您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。
composer require sprintcube/cakephp-sendgrid
安装后,加载插件
Plugin::load('SendGrid');
或者,您可以使用 shell 命令来加载插件
$ bin/cake plugin load SendGrid
配置
在 app.php 中将您的 SendGrid API 密钥设置在 EmailTransport
设置中
'EmailTransport' => [ ... 'sendgrid' => [ 'className' => 'SendGrid.SendGrid', 'apiKey' => 'your-api-key' // your api key ] ]
并在 Email
设置中创建新的交付配置文件。
'Email' => [ 'default' => [ 'transport' => 'default', 'from' => 'you@localhost', //'charset' => 'utf-8', //'headerCharset' => 'utf-8', ], 'sendgrid' => [ 'transport' => 'sendgrid' ] ]
使用方法
现在,您可以使用 CakePHP 的 Email
简单地通过 SendGrid 发送电子邮件。
$email = new SendGridMailer(); $email->setFrom(['you@yourdomain.com' => 'CakePHP SendGrid']) ->setTo('foo@example.com.com') ->addTo('bar@example.com') ->addCc('john@example.com') ->setSubject('Email from CakePHP SendGrid plugin') ->deliver('Message from CakePHP SendGrid plugin');
就这么多。
高级使用
您还可以使用一些更多选项通过 SendGrid API 发送电子邮件。为此,只需在发送电子邮件之前调用相应的方法即可。
自定义头
您可以通过传递自己的头信息。它必须以 "X-" 前缀。像使用默认的 Email::setHeaders
方法一样使用它,
$email = new SendGridMailer(); $email->setFrom(['you@yourdomain.com' => 'CakePHP SendGrid']) ->setTo('foo@example.com.com') ->setHeaders([ 'X-Custom' => 'headervalue', 'X-MyHeader' => 'myvalue' ]) ->setSubject('Email from CakePHP SendGrid plugin') ->deliver('Message from CakePHP SendGrid plugin');
在发送请求时,将从头部名称中删除
X-
,例如,X-MyHeader 将变为 MyHeader
附件
使用 Email::setAttachments
方法设置您的附件。
$email = new SendGridMailer(); $email->setFrom(['you@yourdomain.com' => 'CakePHP SendGrid']) ->setTo('foo@example.com.com') ->setSubject('Email from CakePHP SendGrid plugin') ->setAttachments([ 'cake_icon1.png' => Configure::read('App.imageBaseUrl') . 'cake.icon.png', 'cake_icon2.png' => ['file' => Configure::read('App.imageBaseUrl') . 'cake.icon.png'], WWW_ROOT . 'favicon.ico' ]) ->deliver('Message from CakePHP SendGrid plugin');
要发送内联附件,在设置附件时使用
contentId
参数。
模板
您可以使用在 SendGrid 后端创建的模板。通过使用他们的 API 或从 URL 获取模板 ID。使用 setTemplate
方法设置模板 ID。
$email = new SendGridMailer(); $email->setTo('foo@example.com.com') ->setTemplate('d-xxxxxx') ->deliver();
计划
您可以将电子邮件计划在未来的日期发送。根据 SendGrid 文档,您可以将时间设置最多 72 小时。您需要传递一个 Unix 时间戳值。
$email = new SendGridMailer(); $email->setTo('foo@example.com.com') ->setSendAt(1649500630) ->deliver();
报告问题
如果您对此插件或任何错误有问题,请在 GitHub 上提交问题。