- >从()在您创建的每个电子邮件,您可以配置设置这个值在全球范围内,在所有发送的邮件。也是同样如此<代码translate="no" class="notranslate">- > ()和标题。

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10
#配置/包/ dev / mailer.yaml框架:梅勒:信封:发送方:“fabien@example.com”收件人:(“foo@example.com”,“bar@example.com”]标题:来自:“法比< fabien@example.com >”bcc:“baz@example.com”X-Custom-Header:“foobar”

5.2

的<代码translate="no" class="notranslate">头选项是在Symfony 5.2中引入的。欧宝娱乐app下载地址

树枝模板引擎提供先进的特性,比如CSS样式内联和支持HTML / CSS框架来创建复杂的HTML电子邮件消息。首先,确保树枝安装:

1 2 3 4
美元作曲家需要symfony / tw欧宝娱乐app下载地址ig-bundle#如果你使用non-Symfony应用程序的组件:欧宝娱乐app下载地址#需要symfony / twig-b欧宝娱乐app下载地址ridge作曲家

TemplatedEmail类。这个类扩展了正常<一个href=”https://github.com/symfony/symfony/blob/5.2/src/Symfony/Component/Mime/Email.php" class="reference external" title="电子邮件”rel="external noopener noreferrer" target="_blank">电子邮件树枝模板类,但增加了一些新方法:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
使用欧宝娱乐app下载地址\\嫩枝\Mime\TemplatedEmail;美元电子邮件= (TemplatedEmail ())- >从(“fabien@example.com”)- >(地址(“ryan@example.com”))- >主题(“谢谢你签约!”)/ /路径的树枝模板来呈现- >htmlTemplate (“电子邮件/ signup.html.twig”)/ /变量(name = >价值)传递给模板- >上下文([“expiration_date”= >\ DateTime (' + 7天),“用户名”= >“foo”]);< /pre>
                

然后,创建模板:

1 2 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.2/src/Symfony/Bridge/Twig/Mime/WrappedTemplatedEmail.php" class="reference external" title="WrappedTemplatedEmail”rel="external noopener noreferrer" target="_blank">WrappedTemplatedEmail

< img src = " cid: " >语法解释说在前面的部分中,当使用树枝呈现邮件内容可以参考图像文件。首先,为了简化,定义一个树枝名称空间<代码translate="no" class="notranslate">图片指向任何目录存储你的照片:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7
#配置/包/ twig.yaml枝:#……道路:这不管你的照片住#点“% kernel.project_dir % /资产/图片”:图片

现在,使用特殊的<代码translate="no" class="notranslate">email.image ()树枝助手嵌入图像内部的邮件内容:

1 2 3 4 5
{#“@images /”指的是树枝名称空间定义早些时候#}<imgsrc={{email.image (@images / logo.png)}}alt=“标志”><h1>欢迎{{邮件。toName}}!< /h1>{#……#}

<时尚>…> < /风格部分,你必须内联CSS样式

CSS内联意味着每个HTML标签必须定义一个<代码translate="no" class="notranslate">风格与所有的CSS样式属性。这可以使组织CSS一团糟。这就是为什么树枝提供<代码translate="no" class="notranslate">CssInlinerExtension自动化一切给你。安装:

1
美元作曲家需要树枝/ extra-bundle树枝/ cssinliner-extra< /pre>
                

扩展自动启用。使用它,包装整个模板的<代码translate="no" class="notranslate">inline_css过滤器:

1 2 3 4 5 6 7 8 9 10 11
{%应用inline_css %}<风格>{#在这里,定义你的CSS样式像往常一样#}h1{颜色:# 333;}< /风格><h1>欢迎{{邮件。toName}}!< /h1>{#……#}{%endapply%}

你可以通过无限数量的参数<代码translate="no" class="notranslate">inline_css ()加载多个CSS文件。对于这个示例,您还需要定义一个新的分支名称空间<代码translate="no" class="notranslate">风格指向的目录<代码translate="no" class="notranslate">email.css生命:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7
#配置/包/ twig.yaml枝:#……道路:#点这不管你的css文件“% kernel.project_dir % /资产/风格”:风格

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

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

    S / MIME或<代码translate="no" class="notranslate">DKIM。在这两种情况下,证书和私钥必须<一个href=”https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail" class="reference external" rel="external noopener noreferrer" target="_blank">PEM编码,可以使用例如OpenSSL创建或获取官方证书颁发机构(CA)。电子邮件收件人必须CA证书列表中的受信任的发行者为了验证签名。

    DKIM是一个电子邮件词缀数字签名认证方法,与一个域名,每个即将离任的电子邮件消息。它需要一个私人密钥而不是证书:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27日28
    使用欧宝娱乐app下载地址\组件\Mime\加密\DkimSigner;使用欧宝娱乐app下载地址\组件\Mime\电子邮件;美元电子邮件= (电子邮件())- >从(“hello@example.com”)/ /……- >html (“……”);/ /第一个参数:openssl_pkey_get_private一样(),一个字符串的/ /私有密钥的内容或绝对路径(前缀的文件:/ /)/ /第二个和第三个参数:域名和“选择器”用来执行DNS查找/ /(选择器是一个字符串用于指向一个特定DKIM公钥在您的DNS记录)美元签名者=DkimSigner (的文件:/ / /道路/ / private-key.key ',“example.com”,“科幻小说”);/ /如果私钥密码,把它作为第五个参数/ /新DkimSigner(“文件:/ / /道路/ /私有密匙。关键”、“example.com”、“科幻小说”,[],“口令”);美元signedEmail=美元签名者- >号(美元电子邮件);/ /现在使用梅勒组件发送美元signedEmail代替原来的电子邮件/ / DKIM签名者提供了许多配置选项和一个辅助对象来配置它们使用欧宝娱乐app下载地址\组件\Mime\加密\DkimOptions;美元signedEmail=美元签名者- >号(美元电子邮件,(DkimOptions ())- >bodyCanon (“放松”)- >headerCanon (“放松”)- >headersToIgnore ([“问题”])- >toArray ());< /pre>
                     

    5.2

    在Symfony 5.2中介绍了DKIM签名者。欧宝娱乐app下载地址

    你可以通过多个证书<代码translate="no" class="notranslate">SMimeEncrypter构造函数,它会根据选择适当的证书<代码translate="no" class="notranslate">来选择:

    1 2 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 ([/ /关键=电子邮件收件人;值=证书文件路径“jane@example.com”= >“/道路/ / first-certificate.crt”,“john@example.com”= >“/道路/ / second-certificate.crt”]);美元firstEncryptedEmail=美元加密- >加密(美元firstEmail);美元secondEncryptedEmail=美元加密- >加密(美元secondEmail);< /pre>
                    

    dsn配置项的<代码translate="no" class="notranslate">传输条目,如:

    • YAML
    • XML
    • PHP
    1 2 3 4 5 6
    #配置/包/ mailer.yaml框架:梅勒:传输:主要:' % env (MAILER_DSN) %选择:' % env (MAILER_DSN_IMPORTANT) %

    在默认情况下使用第一运输。通过添加一个可以选择其他的传输<代码translate="no" class="notranslate">X-Transport头(梅勒从最后的邮件将自动删除):

    1 2 3 4 5 6
    / /发送使用第一传输(“主要”):美元梅勒- >发送(美元电子邮件);/ /……或使用传输“另类”:美元电子邮件- >getHeaders ()- >addTextHeader (“X-Transport”,“替代”);美元梅勒- >发送(美元电子邮件);< /pre>
                   

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

    开始后,<一个href=”//www.oldmanjams.com/doc/5.2/messenger.html" class="reference internal">信使欧宝体育电话文档和配置一个交通工具。一旦一切都设置,当你调用<代码translate="no" class="notranslate">梅勒- >发送(),一个<一个href=”https://github.com/symfony/symfony/blob/5.2/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.2/messenger.html" class="reference internal">信使:同步和排队消息处理)。

    您可以配置总线是用于分派消息使用<代码translate="no" class="notranslate">message_bus选择。你也可以设置<代码translate="no" class="notranslate">假直接调用梅勒运输和禁用异步交付。

    • YAML
    • XML
    • PHP
    1 2 3 4
    #配置/包/ mailer.yaml框架:梅勒:message_bus:app.another_bus

    5.1

    的<代码translate="no" class="notranslate">message_bus选项是在Symfony 5.1中引入的。欧宝娱乐app下载地址

    某些第三方传输电子邮件支持标签元数据可用于分组,跟踪和工作流。您可以添加使用<一个href=”https://github.com/symfony/symfony/blob/5.2/src/Symfony/Component/Mailer/Header/TagHeader.php" class="reference external" title="TagHeader”rel="external noopener noreferrer" target="_blank">TagHeader和<一个href=”https://github.com/symfony/symfony/blob/5.2/src/Symfony/Component/Mailer/Header/MetadataHeader.php" class="reference external" title="MetadataHeader”rel="external noopener noreferrer" target="_blank">MetadataHeader类。如果您的运输支持头,它会将它们转换为适当的格式:

    1 2 3 4 5 6
    使用欧宝娱乐app下载地址\组件\梅勒\\MetadataHeader;使用欧宝娱乐app下载地址\组件\梅勒\\TagHeader;美元电子邮件- >getHeaders ()- >add (TagHeader (“密码重置”));美元电子邮件- >getHeaders ()- >add (MetadataHeader (“颜色”,“蓝”));美元电子邮件- >getHeaders ()- >add (MetadataHeader (“客户机id”,“12345”));< /pre>
                   

    如果你交通不支持标签和元数据,它们将被添加自定义标题:

    1 2 3
    X-Tag:密码重置X-Metadata-Color:蓝色X-Metadata-Client-ID: 12345< /pre>
                   

    目前支持以下传输标签和元数据:

    • MailChimp的
    • Mailgun
    • 邮戳
    • Sendinblue
    这项工作,包括代码示例,许可下<一个rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons冲锋队3.0许可证。