English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
アップグレード
以前のバージョンからアップグレードする場合は、アップグレードガイドを参照して、破壊的変更や移行手順をご確認ください。
概要
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>'); // LaravelありMJML::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バイナリは、Composerのインストールまたは更新中にCDNから取得され、 このパッケージの「bin」フォルダーに保存されます。ローカルおよび本番環境の両方で必要な バイナリがロードされていることを確認してください。
デフォルトでは、
allはすべてのバイナリを取得します。バンド幅とインストール時間を節約するために、 必要なオペレーティングシステムとアーキテクチャにスコープを絞ることをお勧めします。以下は 利用可能なバイナリです。オペレーティングシステム アーキテクチャ Composerポストアップデートコマンド すべて すべて DefectiveCode\MJML\PullBinary::allDarwin (MacOS) arm64 DefectiveCode\MJML\PullBinary::darwin-arm64Darwin (MacOS) x64 DefectiveCode\MJML\PullBinary::darwin-x64Linux (glibc) arm64 DefectiveCode\MJML\PullBinary::linux-arm64Linux (glibc) x64 DefectiveCode\MJML\PullBinary::linux-x64Linux (musl) arm64 DefectiveCode\MJML\PullBinary::linux-arm64-muslLinux (musl) x64 DefectiveCode\MJML\PullBinary::linux-x64-musl -
次に、以下のcomposerコマンドを実行してPHPパッケージをインストールします:
composer require defectivecode/mjml -
これで完了です!Laravelを使用している場合は、パッケージが自動的に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ファサードのrenderメソッドにMJML文字列を渡します:
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ファサードのisValidメソッドにMJML文字列を渡します:
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パッケージと同じ設定を遵守していますが、以下の点が異なります:
preprocessors- このオプションは利用できません。追加したい場合はプルリクエストをオープンしてください。minifyOptions-html-minifierの代わりに軽量のPHPベースのミニファイアを使用しています。ミニファイアは、 コメントを削除し(Outlook条件を除く)、ホワイトスペースを圧縮し、タグ間のホワイトスペースを削除します。
フォント
デフォルトで以下のフォントが使用されます:
- Open Sans: 'https://fonts.googleapis.com/css?family=Open+Sans:300,400,500,700'
- Droid Sans: 'https://fonts.googleapis.com/css?family=Droid+Sans:300,400,500,700'
- Lato: https://fonts.googleapis.com/css?family=Lato:300,400,500,700
- Roboto: https://fonts.googleapis.com/css?family=Roboto:300,400,500,700
- Ubuntu: https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700
以下のメソッドを使用してフォントを変更できます:
addFont(string $font, string $url)- フォントをフォントリストに追加します。removeFont(string $font)- フォントリストからフォントを削除します。setFonts(array $fonts)- フォントリストを設定します。以下の形式でフォントの配列を提供する必要があります:['font-name' => 'font-url']。
コメント
デフォルトでは、コメントは保持されます。コメントを削除したい場合は、removeComments()メソッドを使用できます。
removeComments()を取り消すには、keepComments()メソッドを呼び出すこともできます。
インクルードを無視
デフォルトでは、私たちのパッケージはmj-includeタグを含めます。この動作は、
ignoreIncludes(bool $ignore)メソッドを呼び出すことで調整できます。
ビューティファイ
私たちのパッケージは、以下のデフォルトオプションを使用してjs-beautifyを用いてHTMLをビューティファイします:
- indentSize: 2
- wrapAttributesIndentSize: 2
- maxPreserveNewline: 0
- preserveNewlines: false
js-beautifyはスネークケースを使用してオプションを提供しますが、私たちのパッケージを使用するときには キャメルケースを使用してください。この選択により、私たちのパッケージは他の設定オプションと 一貫性を持たせています。私たちのパッケージはキャメルケースのオプションをスネークケースに 自動的に変換します。
以下のメソッドを使用して、これらのオプションのいずれかを上書きできます:
setBeautifyOptions(array $options)-js-beautifyオプションを設定します。addBeautifyOption(string $option, mixed $value)-js-beautifyオプションを追加します。removeBeautifyOption(string $option)-js-beautifyオプションを削除します。
ミニファイ
私たちのパッケージは、ミニファイを有効にした場合にHTML出力をミニファイします。ミニファイは以下を実行します:
- HTMLコメントを削除します(
<!--[if mso]>のようなOutlook条件付コメントは保持) - 複数のホワイトスペース文字を単一のスペースに圧縮します
- HTMLタグ間のホワイトスペースを削除します
minify(bool $minify)メソッドを呼び出すことで、ミニファイの有効化または無効化ができます。
なぜPHPベースのミニファイ? 公式MJMLパッケージは、ミニファイに
html-minifierを使用していますが、 これは知られているReDoS脆弱性(CVE-2022-37620)を持ち、 パッケージがメンテナンスされていないため修正が提供されていません。脆弱な依存関係をバンドルしないようにするため、 ミニファイをPHPに移行し、軽量で安全な実装を使用しました。
バリデーションレベル
私たちのパッケージは、デフォルトでsoftバリデーションレベルを使用してMJMLをバリデートします。
これを変更するには、validationLevel(ValidationLevel $validationLevel)メソッドを使用します。
以下のバリデーションレベルが利用可能です:
strict- ドキュメントはバリデーションを通過し、エラーがある場合はレンダリングされませんsoft- ドキュメントはバリデーションを通過し、エラーがあってもレンダリングされますskip- ドキュメントはバリデーションを通過せずにレンダリングされます。
ファイルパス
私たちのパッケージは、デフォルトで.ディレクトリを使用します。filePath(string $path)メソッドを呼び出すことで変更できます。
ジュース
デフォルトでは、私たちのパッケージはジュースオプションを提供しません。 以下のメソッドを使用してジュースオプションを追加できます:
setJuiceOptions(array $options)- ジュースオプションを設定します。addJuiceOption(string $option, mixed $value)- ジュースオプションを追加します。removeJuiceOption(string $option)- ジュースオプションを削除します。setJuicePreserveTags(array $tags)- ジュース保存タグを設定します。addJuicePreserveTag(string $tag, mixed $value)- ジュース保存タグを追加します。removeJuicePreserveTag(string $tag)- ジュース保存タグを削除します。
サポートガイドライン
私たちのオープンソースパッケージを選んでいただきありがとうございます!これらのサポートガイドラインを確認するための時間を取ってください。プロジェクトを最大限に活用する助けになるでしょう。
コミュニティ主導のサポート
私たちのオープンソースプロジェクトは、素晴らしいコミュニティによって支えられています。質問がある場合や支援が必要な場合は、StackOverflowやその他のオンラインリソースが最良の選択です。
バグと機能の優先順位付け
オープンソースプロジェクトを管理する現実として、報告されたすべてのバグや機能リクエストに即座に対応することはできません。以下の順序で問題を優先します。
1. 有料製品に影響を与えるバグ
有料製品に影響を与えるバグは常に最優先事項となります。場合によっては、私たちに直接影響を与えるバグのみを扱うことがあります。
2. コミュニティのプルリクエスト
バグを特定し、解決策を持っている場合は、プルリクエストを提出してください。私たちの製品に影響を与える問題の次に、これらのコミュニティ主導の修正に対して最も高い優先順位を与えます。レビューと承認が行われた後、あなたの解決策をマージし、貢献を認めます。
3. 財政的サポート
上記のカテゴリー以外の問題については、その解決に資金を提供することができます。各オープンイシューには、財政的に貢献できる注文フォームへのリンクがあります。提供された資金額に基づいて、これらの問題を優先します。
コミュニティの貢献
オープンソースは、そのコミュニティが活発であるときに栄えます。バグを修正していない場合でも、コード改善、ドキュメントの更新、チュートリアルの作成、またはコミュニティチャネルで他の人を支援することで貢献を考えてください。私たちは、コミュニティとしてオープンソースの仕事を支援することを皆さんに強く奨励します。
繰り返しになりますが、DefectiveCodeは、有料製品にどのように影響を与えるか、コミュニティのプルリクエスト、そして問題に対して受け取った財政的サポートに基づいてバグを優先します.
ライセンス - MITライセンス
著作権 © Defective Code, LLC. 全著作権を保有します。
本ソフトウェア及び関連する文書ファイル(以下「ソフトウェア」)のコピーを取得したすべての人に対して、無償で本ソフトウェアを制限なく利用する権利、使用、複製、修正、統合、出版、配布、サブライセンス、及び/またはソフトウェアのコピーを販売する権利を許可し、ソフトウェアが提供される人々にもそれを行うことを許可します。ただし、以下の条件に従います:
上記の著作権表示とこの許可通知は、ソフトウェアのすべてのコピーまたは重要な部分に含まれるものとします。
ソフトウェアは「現状のまま」提供され、いかなる種類の保証もなく、明示または暗示を問わず、商業性、特定の目的への適合性および非侵害の保証を含むが、これに限定されない保証はありません。著作者または著作権者は、契約、不法行為、またはその他の方法によるいかなる請求、損害、またはその他の責任についても、ソフトウェアまたはソフトウェアの使用またはその他の取り扱いに起因する場合において、一切の責任を負わないものとします。