将一个DSN解为一党Symfony Mailer运输——意思是Mautic,PrestaShop,Drupal,以及任何普通的Symfony应用软件都从一个软件包中取出,有诚实的错误而不是通用的SMTP拒绝.
TL; DR:是一款新的软件包,会变成有效的Symfony Mailer DSN. 1,每个在Symfony应用程序中——或者在Mautic,PrestaShop,或者其他建立在Symfony Maller上的东西中——通过MailKite的Send API而不是SMTP交付.
它从我们现有的软件包中取出,它现在依赖它而不是携带自己的绘图逻辑拷贝. 15个测试,没有网络,都是绿色的。
一旦包包清除了Packagist的一次性提交步骤——在此之前,从GitHub repo(被标记)直接安装。
为什么一个包到达三个生态系统 Symfony Mailer 解决了从DSN字符串的传输.
这是一个小的设计选择,其后果很大:任何在Symfony Mailer上建造的站台都会继承同一个扩展点,无论该站台是否与Symfony有任何其他关系.
写一个执行文件一次, 它在每一个地方都活下来,这个机制被使用: 一个简单的Symfony app——设置在,完成。
自动配置在装入包件后即取出工厂.
Mautic 5+ — 以 Symfony Mailer 和配置 → 电子邮件设置中的 DSN 字段取代了 SwiftMailer 。
Mautic特别值得呼唤:这是一个营销自定义平台,因此每个安装的电子邮件音量远领先于典型的CMS或CRM接触表.
PrestaShop 8+——自PS8起的同名DSN机制的同名发信人.
Drupal,通过Symfony Mailler Lite模块——一个更小的安装基站(17,528个站点),但接线相同.
我们没有建立四个整合。
我们建了一个,其余的都是DSN做的。
其实这里有什么新东西,不是运输本身不是新代码。
与寄出包裹后 一直生活在里面的同一类子类: 通过 将一个 转换成 MailKite 有效载荷, 调用 API, 并将返回的消息ID 印回到信件上。
新的是工厂——解决了 DSN 字符串的碎片 将运输本身从Laravel下面移出 所以它不是Laravel 拥有的: '现在需要的和它的即时反应—— ~200行的地址,身体,和附件映射逻辑完全存在于一个地方.
Laravel套件自己的测试套件从14个测试降为4个,因为它不再测试它不拥有的逻辑;它测试了接线(解析到正确的传输,SDK客户端单通绑定,做缺失的密钥抛出一个有帮助的错误).
诚实失败而不是通用 SMTP 拒绝 这是值得关注的部分 如果你现在指 Mautic, PrestaShop, 或者Drupal 在通用的 SMTP。
SMTP给你一个数字代码,也许还有一行服务器专用文本.
MailKite API 返回自己的错误消息——"域未验证",一个被被被压制的收件人,一个速率限制——这个传输方式将它逐字地浮出水面,而不是将其翻译为SMTP-形状的抽象,失去了细节: 同样的诚实适用于传输不会默默地下降的: 情况 发生什么 自定义头 (, 标记/ 元数据头) 扔出——API的信封没有空间,所以拒绝打一个从未悄悄地到达内线(嵌入)图像扔出——API没有内容ID支持;在URL而不是一个回复地址扔出一个以上的图像宿主——API接受一个与API自己的消息完全相同的未验证域扔出,HTTP状态 每一个都是一个案例,一个通用SMTP运输要么接受消息,让它下游失败,要么用一个没有说明原因的代码拒绝.
这个告诉你电话站的真正原因 批量售价,明确了Symfony提供的运输,每个请求发送一个电子邮件——这就是合同,并跟随其他桥梁.
大部分第三方Symfony Mailer运输停站:没有批量路径,全站,每个接收者1个HTTP回程,不论何地