Defective Code Logo

Total Downloads Latest Stable Version Latest Stable Version

English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文

翻译警告

本文档已经自动翻译。如果有翻译错误,请在项目中打开一个拉取请求,并将翻译后的文件添加到docs/{ISO 639-1 Code}.md

介绍

MJML 是一种专门设计用于简化编写响应式电子邮件的标记语言。 它的语义化语法确保易用和简单,而其丰富的标准组件库加快了开发速度,减少了电子邮件代码库的复杂性。MJML 的开源引擎生成符合最佳实践的高质量响应式 HTML。如果您曾经遇到过使用 Outlook 的困扰,那么这个包就是为您量身定制的。

我们的 MJML 实现是官方 MJML API 的一个封装。它可以方便地将 MJML 编译为 HTML,直接在 PHP 中使用,无需安装 NodeJS。这个包非常适合希望在 PHP 应用程序中集成 MJML,而又不想麻烦地安装 NodeJS 和 MJML CLI 的用户。

示例

// Without Laravel
(new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Minified HTML
(new MJML)->minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// With Laravel
MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// With Laravel and minified HTML
MJML::minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

安装

  1. 首先将以下内容添加到您的 composer.json 文件中,以便在安装我们的包时从正确的操作系统中获取二进制文件。在运行 installupdatedump-autoload 后,二进制文件将会下载。

    {
    "post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]
    }

    MJML 二进制文件将从我们的 CDN 获取,并在 composer 的安装或更新期间保存在此包的 "bin" 文件夹中。请确保您已加载了所需的二进制文件,以供本地和生产环境使用。

    默认情况下,all 将获取我们支持的所有二进制文件。我们建议将其限定为您需要的操作系统和架构系统,以节省带宽和安装时间。以下是可用的二进制文件。

    操作系统 架构 Composer 后更新命令
    所有 所有 DefectiveCode\MJML\PullBinary::all
    Darwin (MacOS) arm64 DefectiveCode\MJML\PullBinary::darwin-arm64
    Darwin (MacOS) x64 DefectiveCode\MJML\PullBinary::darwin-x64
    Linux arm64 DefectiveCode\MJML\PullBinary::linux-arm64
    Linux x64 DefectiveCode\MJML\PullBinary::linux-x64
  2. 接下来,通过运行以下 composer 命令来安装 PHP 包:

    composer require defectivecode/mjml
  3. 就这样!如果使用 Laravel,我们的包将会自动安装,使用 Laravel 的包发现功能。

用法(不使用Laravel)

如果您使用Laravel,请参阅下面的使用方法。

渲染MJML

要渲染MJML,只需将您的MJML字符串传递给render方法:

use DefectiveCode\MJML;
 
$html = (new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

验证MJML

要验证MJML,只需将您的MJML字符串传递给isValid方法:

use DefectiveCode\MJML;
 
$isValid = (new MJML)->isValid(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

用法(使用Laravel)

渲染MJML

要渲染MJML,只需将MJML字符串传递给MJML外观的render方法:

use DefectiveCode\MJML\Facades\MJML;
 
$html = MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

验证MJML

要验证MJML,只需将MJML字符串传递给MJML外观的isValid方法:

use DefectiveCode\MJML\Facades\MJML;
 
$isValid = MJML::isValid(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

配置

您可以使用以下命令发布配置文件:

php artisan vendor:publish --provider="DefectiveCode\MJML\MJMLServiceProvider"

这将在您的config文件夹中创建一个mjml.php配置文件。当您使用MJML外观时,配置文件中列出的所有选项都会传递给config对象。

配置

可以通过直接在MJML对象上调用以下方法来设置所有配置选项。

use DefectiveCode\MJML;
 
$html = (new MJML)
->setMinify(true)
->setBeautify(false)
->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

我们的包遵循官方MJML包的相同配置,除了以下几点:

字体

我们的包默认使用以下字体:

您可以使用以下方法更改字体:

注释

默认情况下保留注释。如果您希望删除注释,可以使用removeComments()方法。

您还可以通过调用keepComments()方法来恢复removeComments()

忽略包含

默认情况下,我们的包将包括任何mj-include标签。您可以通过调用ignoreIncludes(bool $ignore)方法来调整此行为。

美化

我们的包将使用js-beautify对HTML进行美化,默认选项如下:

虽然js-beautify使用snake_case提供选项,但在使用我们的包时,应使用camelCase。我们做出了这个选择,以使我们的包与其他配置选项保持一致。我们的包将自动将camelCase选项转换为snake_case。

您可以通过使用以下方法之一提供有效的js-beautify配置来覆盖这些选项:

压缩

我们的包将使用html-minifier-terser对HTML进行压缩,默认选项如下:

您可以通过使用以下方法之一提供有效的html-minifier-terser配置来覆盖这些选项:

验证级别

默认情况下,我们的包将使用soft验证级别对MJML进行验证。您可以使用validationLevel(ValidationLevel $validationLevel)方法更改此设置。可用的验证级别如下:

文件路径

默认情况下,我们的包将使用.目录。您可以通过调用filePath(string $path)方法更改此设置。

Juice

我们默认不提供任何juice选项。您可以通过使用以下方法之一添加juice选项:

支持指南

感谢您选择我们的开源软件包!请花点时间阅读这些支持指南。它们将帮助您充分利用我们的项目。

社区驱动的支持

我们的开源项目得益于我们强大的社区。如果您有问题或需要帮助,StackOverflow和其他在线资源是您最好的选择。

缺陷和功能优先级

管理开源项目的现实意味着我们无法立即解决每个报告的缺陷或功能请求。我们按照以下顺序优先处理问题:

1. 影响我们付费产品的缺陷

影响我们付费产品的缺陷始终是我们的首要任务。在某些情况下,我们可能只解决直接影响我们的缺陷。

2. 社区贡献的拉取请求

如果您发现了一个缺陷并且有解决方案,请提交一个拉取请求。在解决影响我们产品的问题之后,我们将优先处理这些社区驱动的修复。一旦审核并批准,我们将合并您的解决方案并给予您的贡献认可。

3. 财务支持

对于不属于上述类别的问题,您可以选择为其解决提供资金支持。每个开放的问题都链接到一个订单表单,您可以在其中进行财务贡献。我们根据提供的资金金额优先处理这些问题。

社区贡献

开源在其社区活跃时才能繁荣。即使您不修复缺陷,也可以通过代码改进、文档更新、教程或在社区渠道中帮助他人来做出贡献。我们强烈鼓励每个人作为一个社区来支持开源工作。

再次强调,DefectiveCode将根据缺陷对我们付费产品的影响、社区贡献的拉取请求以及收到的财务支持来优先处理缺陷。

许可证 - MIT 许可证

版权所有 © Defective Code, LLC。保留所有权利。

特此免费授予任何获得本软件及相关文档文件(以下简称“软件”)副本的人,无偿使用本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许获得本软件的人这样做,但须遵守以下条件:

在所有副本或实质部分的软件中必须包含上述版权声明和本许可声明。

本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性的保证。无论是在合同、侵权行为或其他情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,与本软件或使用或其他方式有关。

MJML - Defective Code