php - Yii2:使用 Swiftmailer 插件 (Openbuildings\Swiftmailer\CssInlinerPlugin)

标签 php yii yii2 swiftmailer yii-extensions

我的 yii2 应用程序使用 \app\mail\layouts 中给定的默认布局成功发送了带有 yii2 swiftmailer 扩展的电子邮件。名为 html.php喜欢

Yii::$app->mailer->compose('@app/mail/templates/myTemplate', [
    'param1' => $param1, 'param2' => $param2
])->setFrom($senderAdress)->setTo($reveiverAdress)->setSubject('Subject')->send();

不幸的是,标题中样式标签内的 css 不包含在 html.php 中。正如 yii2 官方指南 yiiframework.com/doc-2.0/guide-tutorial-mailing.html 所建议的(给定的示例是:

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=<?= Yii::$app->charset ?>" />
    <style type="text/css">
        .heading {...}
        .list {...}
        .footer {...}
    </style>
    <?php $this->head() ?>
</head>

所以我尝试包含 OpenBuildings swiftmailer css-inliner-plugin通过 composer 安装它并按照 this tutorial 中的建议包含它通过扩展我的 web.php到:

'mailer' => [
    'class' => 'yii\swiftmailer\Mailer',
    'transport' => [
        'class'      => 'Swift_SmtpTransport', 
        'host' => 'smtp.xyz.com',
        'username'   => 'username',
        'password' => 'password',
        'port' => '587',
        'encryption' => 'tls',
        'plugins'    => [
            [
                'class' => 'Openbuildings\Swiftmailer\CssInlinerPlugin',
            ],
        ],
    ],
],

邮件仍会在不包含 <style> 的情况下发送标签内容。有没有人有将插件包含到 yii2 swiftmailer 扩展中的经验?还是有另一种使用扩展的方法,这样就根本不需要使用 swiftmailer 插件了?

最佳答案

有点晚了,但它可能会帮助后来的人找到它......

我使用了相同的代码来包含 CssInlinerPlugin 插件,它立即起作用。我在我的邮件 View 中注册了一些 css,就像这样。

$this->registerCss("
    p, td, th {text-align: left; font-size: 12px; }
    .classname {color: blue; }
"); 

...在发送的邮件中,所有 html 标签现在都具有相同的内联样式。所以这个插件似乎工作得很好。

关于你的最后一个问题。我没有找到比使用这个插件更好的方法来为 Yii2 快速处理这个问题。该插件基于包 tijsverkoyen/css-to-inline-styles ,也用于其他框架。

在 TijsVerkoyen\CssToInlineStyles 的源代码中注意到 css-classnames 从邮件中的样式标签中剥离,但 css-content 被传递到正确的标签。也许这可以解释你所看到的部分内容? (当然,这种行为是可配置的。)

关于php - Yii2:使用 Swiftmailer 插件 (Openbuildings\Swiftmailer\CssInlinerPlugin),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30935466/

相关文章:

php - 在 Yii 中从多个模型创建表单

yii - 如何在 yii 中将所有 url 转发到单个 url

javascript - Yii2 中有什么方法可以在不重新加载的情况下动态更改 URL 吗?来自 pjax 的一部分

php - 如何在 Yii 2 中更新大于所选记录的记录

php - PHP解析/语法错误;以及如何解决它们

php - WordPress - 输入帖子标题后的自定义字段

php - mysql中时间类型列字段数据更新

php - Yii - 使用高级搜索对自定义 CGridView 进行查询操作

java - 与 Java 和 PHP 兼容的密码散列

javascript - 在 Yii2 中动态添加输入字段