genkgo / mail
用于通过不同传输和协议(如SMTP和IMAP)发送电子邮件的库,使用不可变消息和流。还包括SMTP服务器。
2.12.1
2024-05-31 14:42 UTC
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- ext-iconv: *
- ext-intl: *
Requires (Dev)
- ext-openssl: *
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/phpstan: ^1.8.5
- phpstan/phpstan-phpunit: ^1.1.1
- phpunit/phpunit: ^9.5.24
- predis/predis: ^1.0
- psr/log: ^1.0
Suggests
- ext-openssl: Sign your messages with DKIM
- predis/predis: Use redis to queue messages
- dev-master
- 2.12.1
- 2.12.0
- 2.11.1
- 2.11.0
- 2.10.1
- 2.10.0
- 2.9.3
- 2.9.2
- 2.9.1
- 2.9.0
- 2.8.0
- 2.7.16
- 2.7.15
- 2.7.14
- 2.7.13
- 2.7.12
- 2.7.11
- 2.7.10
- 2.7.9
- 2.7.8
- 2.7.7
- 2.7.6
- 2.7.5
- 2.7.4
- 2.7.3
- 2.7.2
- 2.7.1
- 2.7.0
- 2.6.6
- 2.6.5
- 2.6.4
- 2.6.3
- 2.6.2
- 2.6.1
- 2.6.0
- 2.5.7
- 2.5.6
- 2.5.5
- 2.5.4
- 2.5.3
- 2.5.2
- 2.5.1
- 2.5.0
- 2.4.0
- 2.3.0
- 2.2.0
- 2.1.7
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- dev-php_83
- dev-disable_first_fold
This package is auto-updated.
Last update: 2024-08-31 00:31:14 UTC
README
在分析重构代码库时使用哪个邮件库时,我们发现现有的库大多是旧库。一些库没有使用命名空间,我们遇到的每个库都只是一个标量属性包的集合,而不是使用封装的对象。虽然我们过去曾愉快地使用这些库,但它们不符合当前的质量标准。因此,我们根据现代编程原则构建了一个新的更好的库。
如果您想使用不可变消息和流在不同的传输和协议上发送电子邮件,请使用此库。
快速轻松发送消息
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() ->withHeader(new Mail\Header\Subject('Hello World')) ->withHeader(Mail\Header\From::fromEmailAddress('from@example.com')) ->withHeader(Mail\Header\To::fromSingleRecipient('to@example.com', 'name')) ->withHeader(Mail\Header\Cc::fromSingleRecipient('cc@example.com', 'name')); $transport = new Mail\Transport\SmtpTransport( Mail\Protocol\Smtp\ClientFactory::fromString('smtp://user:pass@host/')->newClient(), Mail\Transport\EnvelopeFactory::useExtractedHeader() ); $transport->send($message);
使用composer安装
$ composer require genkgo/mail
特性
- 使用SMTP或mail()发送消息
- 使用IMAPv4从您的邮箱中读取消息(无需扩展)
- 创建回复和转发消息,包括引用原始消息
- 在传输失败时排队消息
- 自动连接和断开连接到SMTP服务器
- 自动生成格式化消息的替代文本
- 最佳编码的标题,因此没有过量的编码标题
- 最佳编码的多部分消息
- 只有流和连接是可变的
- 消息和演员是不可变的
- 值对象可以防止无效状态
- 流确保库具有较低的内存负担
- 许多对象,但API仍然简单易用
- 90%+的测试覆盖率
- 使用最高的PHPStan检测级别
- 如果可能,则仅使用TLS < 1.2
- 不建议使用SSL
- DKIM签名的消息
- 安全性是首要任务
- 用于测试的SMTP服务器
- 优秀的RFC兼容性
- 将消息转换为有效的字符串源
- 库没有外部依赖(但使用intl扩展)
- 仅支持非EOL的PHP版本
即将推出的功能
- 加密和签名消息
未计划
以下功能未由所有者开发,但在社区采取行动时可能成为库的一部分。
- POP支持
- 邮箱抽象层
文档
RFC兼容性
该库力求尽可能符合电子邮件RFC。它应与以下RFC兼容。
- RFC 821,简单邮件传输协议
- RFC 1896,text/enriched MIME内容类型
- RFC 2822,互联网消息格式
- RFC 2045,多用途互联网邮件扩展(MIME)第一部分
- RFC 2046,多用途互联网邮件扩展(MIME)第二部分
- RFC 2047,多用途互联网邮件扩展(MIME)第三部分
- RFC 2048,多用途互联网邮件扩展(MIME)第四部分
- RFC 2049,多用途互联网邮件扩展(MIME)第五部分
- RFC 2392,Content-ID和Message-ID统一资源定位符
- RFC 2821,简单邮件传输协议
- RFC 3501,互联网消息访问协议 - 第4版rev1
- RFC 4954,SMTP身份验证服务扩展
- RFC 5321,简单邮件传输协议
- RFC 6530,国际化电子邮件概述和框架