tsfcorp / email
Laravel 发送电子邮件的包
Requires
- php: ^8.0.2
- ext-json: *
- async-aws/ses: ^1.3
- aws/aws-php-sns-message-validator: ^1.5
- laravel/framework: ^9.0|^10.0|^11.0
- symfony/amazon-mailer: ^6.0
- symfony/google-mailer: ^6.0
- symfony/http-client: ^6.0
- symfony/mailgun-mailer: ^6.0
Requires (Dev)
- mockery/mockery: ^1.2
- orchestra/testbench: ^7.0
- 9.x-dev
- v9.0.4
- v9.0.3
- v9.0.2
- v9.0.1
- v9.0.0
- 8.x-dev
- v8.0.0
- 7.x-dev
- v7.0.4
- v7.0.3
- v7.0.2
- v7.0.1
- v7.0.0
- 6.x-dev
- v6.0.4
- v6.0.3
- v6.0.2
- v6.0.1
- v6.0.0
- 5.x-dev
- v5.0.1
- v5.0.0
- 4.x-dev
- v4.0.2
- v4.0.1
- v4.0.0
- 3.x-dev
- v3.0.0
- 2.x-dev
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- 1.x-dev
- v1.0.14
- v1.0.13
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v0.0.6
- v0.0.5
- v0.0.4
- v0.0.3
- v0.0.2
- v0.0.1
- dev-marianperca-patch-1
- dev-feature/metadata
- dev-master
- dev-actions-matrix
This package is auto-updated.
Last update: 2024-09-14 07:37:58 UTC
README
用于编写和发送电子邮件的流畅接口
此包旨在在独立项目或项目集群中工作,这些项目将消息推送到充当收集器的父项目/数据库。
如果您以集群模式使用此包,请确保在主项目中运行进程 php artisan emails:dispatch-jobs
。这可以通过 supervisor
保持活动状态。
从 8.x 升级到 9.x
在身份下不再支持 Amazon SES 默认 Webhook 配置。切换到配置集。
- 在电子邮件表中添加一个名为 "metadata" 的新列 TEXT 可空
从 7.x 升级到 8.x
addAttachment
方法签名已更改为addAttachment(TsfCorp\Email\Attachment $attachment)
。此对象可以通过以下方式构建:
use TsfCorp\Email\Attachment; $attachment = Attachment::path('/path/to/file.txt'); $attachment = Attachment::path('/path/to/file.txt', 'custom_name.txt'); $attachment = Attachment::disk('s3')->setPath('/path/to/file.txt'); $attachment = Attachment::disk('s3')->setPath('/path/to/file.txt', 'custom_name.txt');
从 6.x 升级到 7.x
to
、cc
、bcc
和bounces_count
列已从emails
表中删除。- 引入了一个新表,称为
email_recipients
。 - 删除了
email_bounces
表 - 添加了新的
webhook_secret
配置值
为了将旧电子邮件迁移到新结构,您必须
- 发布新的
email_recipients
迁移文件并运行迁移 - 构建一个循环遍历当前电子邮件并插入收件人(to、cc 和 bcc)的脚本,并执行它
- 创建一个迁移,应该删除 to、cc、bcc 和 bounces_count 列
- 创建一个迁移,删除 email_bounces 表
从 5.x 升级到 6.x
- 此包现在仅在 laravel 9.x 和 php 8 上运行。对于 laravel 8.x 和更低版本,请使用先前版本。
从 4.x 升级到 5.x
- 已删除 config 中的 database_connection。在创建新电子邮件时使用
setConnection()
以在其他数据库连接上保存电子邮件。 - EmailModel 不应在用户空间中使用。创建自己的模型,该模型扩展了 EmailModel
从 3.x 升级到 4.x
- 在电子邮件表中添加了新的 TEXT "reply_to" 可空列
从 2.x 升级到 3.x
- 在电子邮件表中添加了新的 "uuid" 列
- 删除了 addAttachments(...$file_paths) 方法
安装
在您的 composer.json
中要求此包并更新 composer。运行以下命令
composer require tsfcorp/email
更新 composer 后,服务提供程序将自动通过自动发现进行注册和启用。
如果您的 Laravel 版本低于 5.5,请确保您在 app.php
配置文件中添加了服务提供程序。
'providers' => [ // ... TsfCorp\Email\EmailServiceProvider::class, ];
下一步是运行 artisan 命令以安装配置文件和可选迁移文件。该命令将引导您完成此过程。
php artisan email:install
将 config/email.php
更新为您的设置。
需求
此包利用 Laravel 队列/作业来发送电子邮件。请确保队列系统已正确配置
使用说明
use TsfCorp\Email\Email; use TsfCorp\Email\Attachment; $email = (new Email()) ->to('to@mail.com') ->cc('cc@mail.com') ->bcc('bcc@mail.com') ->subject('Hi') ->body('Hi there!') ->addAttachment(Attachment::path('/path/to/file.txt'));
使用 enqueue()
方法将消息保存到数据库而不发送。当您只想保存消息但延迟发送时非常有用。或者当 database_connection
配置值为另一个数据库且发送是从那里执行的。
$email->enqueue();
保存消息并安排一个作业发送电子邮件
$email->enqueue()->dispatch();
电子邮件提供商
- Mailgun
- Amazon SES
- Google SMTP
Note 1: In order to use Google SMTP you need at least PHP 7.1.3 and also require symfony/google-mailer in your composer.json
Note 2: If your Google Account has 2FA enabled you need to generate an "App Password" in your Google Acccount
弹跳 Webhook
如果无法向收件人发送电子邮件,电子邮件提供商可以通知您。此包为您处理永久性失败的网络钩子。
Mailgun
将 http://app.example/webhook-mailgun
链接添加到您的 Mailgun 网络钩子设置中的“永久性失败”部分。
Amazon SES
- 在 Amazon SNS 下创建一个新主题。
- 在上面的主题下创建一个新的订阅,指定
http://app.example/webhook-ses
作为端点。 - 订阅创建后,AWS 将向指定的端点发送一个 POST 请求,其中包含用于确认订阅的 URL。该 URL 可在应用日志中找到。复制并粘贴到浏览器中。
- 创建一个配置集。
- 配置集创建后,配置事件目的地并选择 Amazon SNS,然后选择步骤 1 中创建的主题。