avzer/mail

一个库,用于通过不同的传输和协议(如SMTP和IMAP)发送电子邮件,使用不可变消息和流。还包括SMTP服务器。

1.0.1 2024-07-05 08:36 UTC

This package is auto-updated.

Last update: 2024-09-05 09:03:47 UTC


README

Latest Version Build Status Build Status Scrutinizer Code Quality Code Coverage

在分析重构代码库时使用哪个邮件库时,我们发现可用的库大多是遗留库。一些库没有使用命名空间,我们遇到的每个库都仅仅是标量属性包的集合,而不是使用封装的对象。虽然我们过去对这些库使用得很开心,但它们不符合当前的质量标准。因此,我们根据现代编程原则构建了一个新的更好的库。

如果您想使用不可变消息和流通过不同的传输和协议发送电子邮件,请使用此库。

快速轻松地发送消息

$message = (new MessageBodyCollection('<html><body><p>Hello World</p></body></html>'))
    ->withAttachment(new FileAttachment('/order1.pdf', new ContentType('application/pdf')))
    ->createMessage()
    ->withHeader(new Subject('Hello World'))
    ->withHeader(From::fromEmailAddress('from@example.com'))
    ->withHeader(To::fromSingleRecipient('to@example.com', 'name'))
    ->withHeader(Cc::fromSingleRecipient('cc@example.com', 'name'));

$transport = new SmtpTransport(
    ClientFactory::fromString('smtp://user:pass@host/')->newClient(),
    EnvelopeFactory::useExtractedHeader()
);

$transport->send($message);

使用composer安装

$ composer require genkgo/mail

功能

  • 使用SMTP或mail()发送消息
  • 使用IMAPv4从您的邮箱中读取消息(无需扩展)
  • 创建回复和转发消息,包括引用原始消息
  • 在传输失败时排队消息
  • 自动连接并定期重新连接到SMTP服务器
  • 自动生成格式化消息的替代文本
  • 最优化的编码头,因此没有过多的(Q/B)编码头
  • 最优化的多部分消息编码
  • 只有流和连接是可变的
  • 消息和演员是不可变的
  • 值对象可以防止无效状态
  • 流确保库有较低的内存负担
  • 许多对象但API仍然简单易用
  • 90%+的测试覆盖率
  • 使用最高的PHPStan检测级别
  • 如果可能,仅使用TLS < 1.2
  • 不建议使用SSL
  • DKIM签名的消息
  • 安全性是首要考虑的
  • 用于测试目的的SMTP服务器
  • 良好的RFC合规性
  • 将消息转换为有效的字符串源
  • 库没有外部依赖(但使用intl扩展)
  • 仅支持PHP 7.1及以上

即将推出的功能

  • 加密和签名的消息

未计划

以下功能目前未被所有者开发计划所包含,但如果有社区采取行动,这些功能可能会成为库的一部分。

  • POP支持
  • 邮箱抽象层

文档

RFC合规性

这个库尽可能符合电子邮件RFC。它应该符合以下RFC。

致谢

没有Zend/MailPHPMailer,这个库无法存在。