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 的包装器。它使得在 PHP 中直接编译 MJML 为 HTML 变得方便,无需 NodeJS。这个包对于希望在不安装 NodeJS 和 MJML CLI 的情况下集成 MJML 的 PHP 应用程序来说是理想的选择。
// 不使用 Laravel(new MJML)->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // 压缩后的 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>'); // 使用 LaravelMJML::render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // 使用 Laravel 和压缩后的 HTMLMJML::minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>');
首先在你的 composer.json
文件中添加以下内容,以便在安装我们的包时为你的操作系统拉取正确的二进制文件。运行 install
、update
或 dump-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 |
接下来,通过运行以下 composer 命令安装 PHP 包:
composer require defectivecode/mjml
就这样!如果使用 Laravel,我们的包将通过 Laravel 的包发现自动安装。
如果您使用 Laravel,请参见下面的 Laravel 使用方法。
要渲染 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 字符串传递给 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>');
要渲染 MJML,只需将你的 MJML 字符串传递给 MJML facade 上的 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 facade 上的 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 facade 时都会传递给 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 包相同的配置,除了以下几点:
preprocessors
- 此选项不可用。如果您希望添加此选项,请提交一个 pull 请求。minifyOptions
- 我们使用 html-minifier-terser
,而官方包使用 html-minifier
进行压缩。我们决定更换处理器,因为 html-minifer
不再维护,并且存在一些安全问题。我们的包默认使用以下字体:
您可以使用以下方法更改字体:
addFont(string $font, string $url)
- 将字体添加到字体列表中。removeFont(string$font)
- 从字体列表中删除字体。setFonts(array $fonts)
- 设置字体列表。您应提供一个格式为 ['font-name' => 'font-url']
的字体数组。默认情况下,注释会被保留。如果您希望删除注释,可以使用 removeComments()
方法。
您也可以通过调用 keepComments()
方法恢复 removeComments()
。
默认情况下,我们的包会包含任何 mj-include
标签。您可以通过调用 ignoreIncludes(bool $ignore)
方法调整此行为。
我们的包将使用 js-beautify
进行 HTML 美化,默认选项如下:
虽然
js-beautify
使用 snake_case 提供选项,但在使用我们的包时,您应使用 camelCase。我们做出此选择是为了使我们的包与其他配置选项保持一致。我们的包会自动将 camelCase 选项转换为 snake_case。
您可以通过提供有效的 js-beautify
配置来覆盖这些选项,使用以下方法:
setBeautifyOptions(array $options)
- 设置 js-beautify
选项。addBeautifyOption(string $option, mixed $value)
- 添加一个 js-beautify
选项。removeBeautifyOption(string $option)
- 删除一个 js-beautify
选项。我们的包将使用 html-minifier-terser
进行 HTML 压缩,默认选项如下:
您可以通过提供有效的 html-minifier-terser
配置来覆盖这些选项,使用以下方法:
setMinifyOptions(array $options)
- 设置 html-minifier-terser
选项。addMinifyOption(string $option, mixed $value)
- 添加一个 html-minifier-terser
选项。removeMinifyOption(string $option)
- 删除一个 html-minifier-terser
选项。我们的包将默认使用 soft
验证级别来验证 MJML。您可以使用 validationLevel(ValidationLevel $validationLevel)
方法更改此设置。可用的验证级别如下:
strict
- 您的文档将进行验证,如果有任何错误则不会渲染soft
- 您的文档将进行验证,即使有错误也会渲染skip
- 您的文档将在不进行验证的情况下渲染。我们的包将默认使用 .
目录。您可以通过调用 filePath(string $path)
方法更改此设置。
我们默认不提供任何 juice 选项。您可以通过使用以下方法添加 juice 选项:
setJuiceOptions(array $options)
- 设置 juice 选项。addJuiceOption(string $option, mixed $value)
- 添加一个 juice 选项。removeJuiceOption(string $option)
- 删除一个 juice 选项。setJuicePreserveTags(array $tags)
- 设置 juice 保留标签。addJuicePreserveTag(string $tag, mixed $value)
- 添加一个 juice 保留标签。removeJuicePreserveTag(string $tag)
- 删除一个 juice 保留标签。# 支持指南 感谢您选择我们的开源软件包!请花点时间查看这些支持指南。它们将帮助您充分利用我们的项目。 ## 社区驱动支持 我们的开源项目由我们出色的社区推动。如果您有问题或需要帮助,StackOverflow 和其他在线资源是您最好的选择。 ## 错误和功能优先级 管理开源项目的现实意味着我们不能立即解决每个报告的错误或功能请求。我们按以下顺序优先处理问题: ### 1. 影响我们付费产品的错误 影响我们付费产品的错误将始终是我们的首要任务。在某些情况下,我们可能只会解决直接影响我们的错误。 ### 2. 社区拉取请求 如果您发现了一个错误并有解决方案,请提交拉取请求。在解决影响我们产品的问题后,我们将优先处理这些社区驱动的修复。一旦审核并批准,我们将合并您的解决方案并感谢您的贡献。 ### 3. 财务支持 对于上述类别之外的问题,您可以选择资助其解决。每个未解决的问题都链接到一个订单表单,您可以在其中提供财务支持。我们根据提供的资助金额优先处理这些问题。 ### 社区贡献 开源在社区活跃时蓬勃发展。即使您没有修复错误,也可以通过代码改进、文档更新、教程或在社区渠道中帮助他人来贡献。我们强烈鼓励每个人作为一个社区来支持开源工作。 _重申一下,DefectiveCode 将根据错误对我们付费产品的影响、社区拉取请求以及收到的财务支持来优先处理错误。_
版权所有 © Defective Code, LLC。保留所有权利
特此免费授予任何获得本软件及相关文档文件(“软件”)副本的人员使用本软件的权限,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,并允许向其提供本软件的人员在符合以下条件的情况下这样做:
上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。
本软件按“原样”提供,不提供任何形式的明示或暗示担保,包括但不限于对适销性、特定用途适用性和非侵权的担保。在任何情况下,作者或版权持有人均不对因本软件或本软件的使用或其他交易而产生的任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权行为或其他方面。