Genkgo/Mail - 现代化的PHP邮件库
项目地址:https://gitcode.com/genkgo/mail
在寻找一种现代的PHP邮件解决方案时,你可能会发现现有的库大多属于遗留代码,不满足当前的编程标准。这就是Genkgo/Mail诞生的原因。这是一个遵循现代化编程原则构建的邮件库,它提供了一种高效且简单的方式来发送和接收电子邮件。
项目介绍
Genkgo/Mail是一个利用现代PHP特性设计的邮件库,支持SMTP和mail()协议发送消息,以及通过IMAPv4读取邮箱中的邮件。它的核心设计理念是使用不可变对象(immutable)和流(stream),确保了代码的安全性和效率。此外,Genkgo/Mail具有高测试覆盖率,严格遵守PHPStan的最高检测级别,确保了代码的质量。
项目技术分析
这个库采用了封装良好的对象模型,如Mail\MessageBodyCollection
、Mail\Header
等,它们作为值对象(value object),防止了非法状态的发生。邮件和参与者对象都是不可变的,只有连接和流可以改变,这大大提高了代码的可预测性。利用PHP的streams处理数据,使得该库在内存占用上表现优秀。另外,Genkgo/Mail提供了自动连接和重连SMTP服务器的能力,并能根据需要自动生成替代文本,优化编码头和多部分消息,实现最高效的邮件发送。
应用场景
- 高效的批量邮件发送服务,例如营销邮件或订阅通知。
- 建立回复和转发邮件的系统,包括原消息的引用。
- 在本地环境进行邮件收发的测试。
- 实现高度定制化的邮件模板和附件管理。
- 安全性要求高的邮件系统,例如DKIM签名邮件。
项目特点
- 支持SMTP和mail()两种发送方式。
- 可以创建带有附件和HTML内容的邮件。
- 使用IMAPv4阅读邮箱消息,无需扩展支持。
- 具备自动重新连接功能,适应不稳定网络环境。
- 提供测试用SMTP服务器。
- 遵循多种邮件相关RFC规范,确保邮件格式正确。
- 无外部依赖,仅需intl扩展。
- 不低于90%的测试覆盖率,保证代码质量。
- 鼓励社区参与开发,未来可能支持加密和签名邮件。
安装与使用
安装Genkgo/Mail只需一行命令:
composer require genkgo/mail
快速发送邮件的示例:
use Genkgo\Mail;
// 创建邮件...
$message = (new Mail\MessageBodyCollection('<html><body><p>Hello World</p></body></html>'))
->withAttachment(new Mail\Mime\FileAttachment('/order1.pdf', new Mail\Header\ContentType('application/pdf')))
->createMessage()
// 添加其他头部信息...
;
// 创建SMTP传输器并发送邮件...
$transport = new Mail\Transport\SmtpTransport(...);
$transport->send($message);
文档与支持
- English文档:https://mail.readthedocs.io/
- PHP7.1以下版本不支持(推荐使用最新PHP版本)
Genkgo/Mail是一个致力于提供高效、安全、符合标准的邮件解决方案的库。如果你正在寻找一个现代化的邮件处理工具,那么Genkgo/Mail将是你的理想选择。现在就开始使用它,提升你的邮件处理体验吧!