树枝模板引擎提供高级功能,如CSS样式内联和支持HTML/CSS框架,以创建复杂的HTML电子邮件消息。首先,确保安装了Twig:

1
作曲家需要symfony/树枝-b欧宝娱乐app下载地址undle

TemplatedEmail类。这个类扩展了普通类<一个href="https://github.com/symfony/symfony/blob/5.0/src/Symfony/Component/Mime/Email.php" class="reference external" title="电子邮件"rel="external noopener noreferrer" target="_blank">电子邮件类,但为Twig模板添加了一些新方法:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16
使用欧宝娱乐app下载地址嫩枝MimeTemplatedEmail电子邮件= (TemplatedEmail ())->从(“fabien@example.com”->(地址(“ryan@example.com”))->主题(“谢谢你报名!”//要渲染的Twig模板路径->htmlTemplate (“电子邮件/ signup.html.twig”//向模板传递变量(name => value->上下文([“expiration_date”= >\ DateTime (' + 7天),“用户名”= >“foo”,]);

然后,创建模板:

12 3 4 5 6 7 8 9 10 11 12
{/电子邮件/ signup.html #模板。树枝#}<h1>欢迎{{邮件。toName}}h1><p>你注册了{{username}}以下邮件:p><p><代码>{{email.to[0]。地址}}代码>p><p><一个href“#”>点击这里激活您的帐户一个>(此链接有效期至{{expiration_date |日期('F jS')}}p>

类中传递的任何参数都可以访问<代码translate="no" class="notranslate">上下文()方法<代码translate="no" class="notranslate">TemplatedEmail类,并添加到一个名为<代码translate="no" class="notranslate">电子邮件,这是一个实例<一个href="https://github.com/symfony/symfony/blob/5.0/src/Symfony/Bridge/Twig/Mime/WrappedTemplatedEmail.php" class="reference external" title="WrappedTemplatedEmail"rel="external noopener noreferrer" target="_blank">WrappedTemplatedEmail

S / MIME标准,以增加其完整性/安全性。这两个选项可以组合起来对已签名的消息进行加密和/或对加密的消息进行签名。

在签名/加密消息之前,请确保具备:

  • 的<一个href="https://www.php.net/manual/en/book.openssl.php" class="reference external" rel="external noopener noreferrer" target="_blank">OpenSSL PHP扩展正确安装和配置;
  • 一个有效的<一个href="https://en.wikipedia.org/wiki/S/MIME" class="reference external" rel="external noopener noreferrer" target="_blank">S / MIME安全证书。

证书和私钥必须一致<一个href="https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail" class="reference external" rel="external noopener noreferrer" target="_blank">PEM编码,可以使用例如OpenSSL创建,也可以从官方的证书颁发机构(CA)获得。电子邮件收件人必须在可信发行者列表中拥有CA证书,以便验证签名。

提示

使用OpenSSL生成证书时,请确保添加<代码translate="no" class="notranslate">-addtrust emailProtection命令选项。

提示

的<代码translate="no" class="notranslate">SMimeSigner类定义其他可选参数,以传递中间证书并使用位操作符选项配置签名过程<一个href="https://secure.php.net/manual/en/function.openssl-pkcs7-sign.php" class="reference external" title="openssl_pkcs7_sign"rel="external noopener noreferrer" target="_blank">openssl_pkcs7_signPHP函数。

可以将多个证书传递给<代码translate="no" class="notranslate">SMimeEncrypter ()构造函数,它将根据<代码translate="no" class="notranslate">来选择:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
firstEmail= (电子邮件())/ /……->(“jane@example.com”);secondEmail= (电子邮件())/ /……->(“john@example.com”);// SMimeEncrypter的第二个可选参数定义使用哪种加密算法//(它必须是以下常量之一:https://www.php.net/manual/en/openssl.ciphers.php)加密SMimeEncrypter ([// key =电子邮件收件人;Value =证书文件的路径“jane@example.com”= >“/道路/ / first-certificate.crt”“john@example.com”= >“/道路/ / second-certificate.crt”]);firstEncryptedEmail加密->加密(firstEmail);secondEncryptedEmail加密->加密(secondEmail);

梅勒- >发送(电子邮件),邮件立即发送到运输。为了提高性能,您可以利用<一个href="//www.oldmanjams.com/doc/5.0/messenger.html" class="reference internal">信使稍后通过信使传输发送消息。

首先按照下面的<一个href="//www.oldmanjams.com/doc/5.0/messenger.html" class="reference internal">信使欧宝体育电话文档化和配置传输。等一切都安排好了,你打电话的时候<代码translate="no" class="notranslate">梅勒- >发送(),一个<一个href="https://github.com/symfony/symfony/blob/5.0/src/Symfony/Component/Mailer/Messenger/SendEmailMessage.php" class="reference external" title="SendEmailMessage"rel="external noopener noreferrer" target="_blank">SendEmailMessage消息将通过默认消息总线(<代码translate="no" class="notranslate">messenger.default_bus).假设你有一个传输工具叫做<代码translate="no" class="notranslate">异步,你可以把讯息传送到那里:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8
#配置/包/ messenger.yaml框架:信使:传输:异步:“% env (MESSENGER_TRANSPORT_DSN) %”路由:“欧宝娱乐app下载地址Symfony \组件\梅勒\ \ SendEmailMessage使者’异步

得益于此,消息将被发送到稍后处理的传输,而不是立即传递(参见<一个href="//www.oldmanjams.com/doc/5.0/messenger.html" class="reference internal">信使:同步和排队消息处理).

此工作,包括代码示例,是根据<一个rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">创作共用BY-SA 3.0许可证。