lanin/laravel-email-templates-optimization

通过Laravel模板机制优化您的电子邮件模板样式。

0.1.0 2016-10-15 08:44 UTC

This package is auto-updated.

Last update: 2024-09-07 21:24:40 UTC


README

通过Laravel模板机制优化您的电子邮件模板样式。

Build Status Code Coverage Scrutinizer Code Quality

如果您想发送HTML电子邮件,不能只通过带有 <style></style> 标签来发送,或者链接样式表。大多数电子邮件客户端都会将其截断,客户端将看到没有样式的电子邮件。

实现最佳电子邮件质量的方法是将所有样式转换为内联 style="" 属性,如下所示

源代码

<!DOCTYPE html>
<html>
<head>
  <title>Hello World</title>
  <style>
    body {
      font-size: 14px;
    }
    h1 {
      font-size: 20px;
    }
    a {
      color: #333;
    }
  </style>
</head>
<body>
  <h1>Hello!</h1>
  <p class="content">
    <a href="https://laravel.net.cn">Laravel</a>
  </p>
</body>
</html>

结果

<!DOCTYPE html>
<html>
<head>
  <title>Hello World</title>
</head>
<body style="font-size: 14px;">
  <h1 style="font-size: 20px;">Hello!</h1>
  <p class="content">
    <a href="https://laravel.net.cn" style="color: #333;">Laravel</a>
  </p>
</body>
</html>

如何实现这一点?

  • 您可以预先编译模板,并按原样存储和发送它们。但是,编译后的模板将难以维护。
  • 或者您可以在每次发送电子邮件时编译它们,就像在 https://github.com/fedeisas/laravel-mail-css-inliner 包中一样。但这将造成巨大的开销。

考虑到这一点,我创建了这款引擎。它将CSS编译到电子邮件模板中,同时利用原生Laravel的Blade语法和编译并缓存的方法。

这意味着您可以像以前一样存储电子邮件模板,它们将实时编译并缓存,以便每次不需要重新编译!

安装

需要PHP 5.5.9+或HHVM 3.3+,ComposerLaravel 5.1+。

要获取Laravel-Email-Templates-Optimization的最新版本,只需通过Composer安装即可。

$ composer require "lanin/laravel-email-templates-optimization:0.1.*"

安装包后,您需要注册服务提供者。打开config/app.php文件,并在providers键中添加以下内容。

Lanin\Laravel\EmailTemplatesOptimization\ServiceProvider::class,

使用方法

您需要做的就是将电子邮件模板的文件名从*.blade.php重命名为*.email.php,然后就可以使用了!这个引擎将为您完成剩余的工作!

配置

此外,您还可以告诉引擎使用哪些静态CSS文件与模板一起使用,以避免在每个模板中重复。

为此,您可以将以下内容设置到您的view.php配置中

    'emails' => [
        /*
        |--------------------------------------------------------------------------
        | Css Files
        |--------------------------------------------------------------------------
        |
        | List of absolute paths to static css files to use in your email templates.
        |
        | Example: realpath(resource_path('assets/css/emails.css'))
        |
        */
        'css_files' => [
        
        ],
    ],

贡献

请随意fork这个包,并通过提交拉取请求来增强功能。