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 | 中文

Uplifting

Se você está fazendo a atualização de uma versão anterior, por favor, consulte o Guia de Atualização para mudanças significativas e etapas de migração.

Introdução

MJML é uma linguagem de marcação especificamente projetada para simplificar o processo de codificação de e-mails responsivos. Sua sintaxe semântica garante facilidade e simplicidade, enquanto sua extensa biblioteca de componentes padrão acelera o desenvolvimento e reduz a complexidade do seu código de e-mail. O motor de código aberto do MJML gera HTML responsivo de alta qualidade que adere às melhores práticas. Se você já sentiu as frustrações de trabalhar com o Outlook, este pacote foi feito para você.

Nossa implementação do MJML serve como um wrapper para a API oficial do MJML. Ele permite a compilação conveniente de MJML em HTML diretamente dentro do PHP, sem a necessidade do NodeJS. Este pacote é ideal para aplicações PHP que desejam incorporar MJML sem a complicação de instalar o NodeJS e a CLI do MJML.

Exemplo

// Sem 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 minificado
(new MJML)->minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Com Laravel
MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Com Laravel e HTML minificado
MJML::minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Instalação

  1. Primeiro, adicione o seguinte ao seu arquivo composer.json para instruir nosso pacote a baixar os binários corretos para seu sistema operacional quando nosso pacote for instalado. Os binários serão baixados após você executar install, update, ou dump-autoload.

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

    O binário do MJML será obtido de nosso CDN e salvo na pasta "bin" deste pacote durante a instalação ou atualização do composer. Certifique-se de que você tenha os binários necessários carregados tanto para seus ambientes locais quanto de produção.

    Por padrão, all irá baixar todos os binários que suportamos. Recomendamos restringir isso aos sistemas operacionais e arquiteturas que você precisa para economizar na largura de banda e no tempo de instalação. Os seguintes são os binários disponíveis.

    Sistema Operacional Arquitetura Comando Pós Atualização do Composer
    Todos Todos DefectiveCode\MJML\PullBinary::all
    Darwin (MacOS) arm64 DefectiveCode\MJML\PullBinary::darwin-arm64
    Darwin (MacOS) x64 DefectiveCode\MJML\PullBinary::darwin-x64
    Linux (glibc) arm64 DefectiveCode\MJML\PullBinary::linux-arm64
    Linux (glibc) x64 DefectiveCode\MJML\PullBinary::linux-x64
    Linux (musl) arm64 DefectiveCode\MJML\PullBinary::linux-arm64-musl
    Linux (musl) x64 DefectiveCode\MJML\PullBinary::linux-x64-musl
  2. Em seguida, instale o pacote PHP executando o seguinte comando do composer:

    composer require defectivecode/mjml
  3. É isso! Se você estiver usando o Laravel, nosso pacote será instalado automaticamente usando a descoberta de pacotes do Laravel.

Uso (Sem Laravel)

Consulte o uso com Laravel abaixo se você estiver usando o Laravel.

Renderizando MJML

Para renderizar MJML, basta passar sua string MJML para o método 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>'
);

Validando MJML

Para validar MJML, basta passar sua string MJML para o método 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>'
);

Uso (Com Laravel)

Renderizando MJML

Para renderizar MJML, basta passar sua string MJML para o render na fachada 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>'
);

Validando MJML

Para validar MJML, basta passar sua string MJML para o método isValid na fachada 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>'
);

Configuração

Você pode publicar o arquivo de configuração usando o seguinte comando:

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

Isso criará um arquivo de configuração mjml.php na sua pasta config. Todas as opções listadas no arquivo de configuração são passadas para o objeto config quando você usa a fachada MJML.

Configuração

Todas as opções de configuração podem ser definidas chamando os seguintes métodos diretamente no objeto 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>'
);

Nosso pacote segue a mesma configuração que o pacote oficial MJML, exceto pelas seguintes:

Fontes

Nosso pacote usa as seguintes fontes por padrão:

Você pode alterar as fontes usando os seguintes métodos:

Comentários

Os comentários são mantidos por padrão. Se você deseja remover comentários, pode utilizar o método removeComments().

Você também pode reverter o removeComments() chamando o método keepComments().

Ignorar Includes

Por padrão, nosso pacote ignora mj-include tags. Isso corresponde ao padrão mais seguro do MJML 5. Você pode habilitar includes chamando ignoreIncludes(false).

Ao habilitar includes, use filePath(string $path) como o diretório base e includePath(string|array|null $path) para permitir diretórios adicionais de inclusão.

Embelezar

Nosso pacote irá embelezar o HTML usando js-beautify. O MJML 5.2 também utiliza js-beautify internamente, mas este pacote mantém a embelezamento em nível de wrapper para que opções personalizadas de PHP beautifyOptions continuem funcionando. As opções padrão são:

Embora js-beautify utilize snake_case para fornecer opções, você deve usar camelCase ao utilizar nosso pacote. Nós fizemos esta escolha para manter nosso pacote consistente com o restante das opções de configuração. Nosso pacote irá automaticamente converter as opções camelCase para snake_case.

Você pode sobrepor qualquer uma dessas opções fornecendo uma configuração válida do js-beautify utilizando os seguintes métodos:

Minificar

Nosso pacote irá minificar a saída HTML quando habilitado. A minificação realiza o seguinte:

Você pode habilitar ou desabilitar a minificação chamando o método minify(bool $minify).

Por que minificação baseada em PHP? O MJML 5 não utiliza mais o antigo pacote vulnerável html-minifier. Este pacote ainda mantém a minificação em PHP para preservar o comportamento de saída introduzido na versão 2.x. Se você precisa das opções nativas de minificação htmlnano/cssnano do MJML 5, abra uma issue com a forma da opção requerida.

Nível de Validação

Nosso pacote irá validar o MJML usando o nível de validação soft por padrão. Você pode mudar isso utilizando o método validationLevel(ValidationLevel $validationLevel). Os seguintes níveis de validação estão disponíveis:

Caminho do Arquivo

Nosso pacote utilizará o diretório . por padrão. Você pode mudar isso chamando o método filePath(string $path).

O MJML 5 trata filePath como o diretório base do sandbox de inclusão. Se os includes estiverem habilitados, caminhos fora de filePath são negados, a menos que sejam explicitamente permitidos com includePath(string|array|null $path).

Juice

Não fornecemos nenhuma opção juice por padrão. Você pode adicionar opções de juice utilizando os seguintes métodos:

دعم الإرشادات

شكرًا لاختيارك حزمة المصادر المفتوحة الخاصة بنا! يرجى أخذ لحظة للاطلاع على هذه الإرشادات للدعم. ستساعدك في تحقيق أقصى استفادة من مشروعنا.

الدعم المدفوع من المجتمع

مشروعنا مفتوح المصدر مدفوع بمجموعتنا الرائعة. إذا كان لديك أي أسئلة أو تحتاج إلى مساعدة، فإن StackOverflow و موارد الإنترنت الأخرى هي أفضل خيارات لك.

الأخطاء، وأولويات الميزات

واقع إدارة مشروع مفتوح المصدر يعني أننا لا نستطيع معالجة كل خطأ تم الإبلاغ عنه أو طلب ميزة على الفور. نحن نعطي الأولوية للقضايا بالترتيب التالي:

1. الأخطاء التي تؤثر على منتجاتنا المدفوعة

تعتبر الأخطاء التي تؤثر على منتجاتنا المدفوعة دائمًا في قمة أولوياتنا. في بعض الحالات، قد نكتفي بمعالجة الأخطاء التي تؤثر علينا مباشرة.

2. طلبات السحب الخاصة بالمجتمع

إذا كنت قد حددت خطأ ولديك حل، يرجى تقديم طلب سحب. بعد القضايا التي تؤثر على منتجاتنا، نعطي الأولوية الأعلى لهذه الإصلاحات المدفوعة من المجتمع. بمجرد مراجعتها والموافقة عليها، سنقوم بدمج حلك ونذكر مساهمتك.

3. الدعم المالي

بالنسبة للقضايا خارج الفئات المذكورة، يمكنك اختيار تمويل حلها. كل قضية مفتوحة مرتبطة بنموذج طلب حيث يمكنك المساهمة ماليًا. نحن نعطي الأولوية لهذه القضايا بناءً على المبلغ المقدم من التمويل.

مساهمات المجتمع

تزدهر المصادر المفتوحة عندما يكون المجتمع نشطًا. حتى إذا لم تكن تقوم بإصلاح الأخطاء، قم بالتفكير في المساهمة من خلال تحسينات الكود، تحديثات الوثائق، الدروس التعليمية، أو من خلال مساعدة الآخرين في قنوات المجتمع. نحن نشجع الجميع، كمجتمع، على دعم العمل المفتوح المصدر.

للتأكيد، ستعطي DefectiveCode الأولوية للأخطاء بناءً على كيفية تأثيرها على منتجاتنا المدفوعة، وطلبات السحب الخاصة بالمجتمع، والدعم المالي المستلم للقضايا.

Lizenz - MIT Lizenz

Copyright © Defective Code, LLC. Alle Rechte vorbehalten

Hiermit wird kostenlos die Erlaubnis erteilt, an jede Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die "Software") erhält, mit der Software ohne Einschränkung umzugehen, einschließlich, aber nicht beschränkt auf die Rechte, die Software zu nutzen, zu kopieren, zu modifizieren, zu fusionieren, zu veröffentlichen, zu verteilen, Unterlizenzen zu erteilen und/oder Kopien der Software zu verkaufen, und Personen, denen die Software zur Verfügung gestellt wird, zu gestatten, dies zu tun, unter der Bedingung der folgenden Bedingungen:

Der obige Copyright-Hinweis und dieser Erlaubnishinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.

DIE SOFTWARE WIRD "WIE BESEHEN" BEREITGESTELLT, OHNE JEGLICHE GARANTIE, WELCHER ART, AUSDRÜCKLICH ODER IMPLIZIT, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GARANTIEN DER MARKTFÄHIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND KEINEN RECHTSBRUCH. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHT-RECHTHABER FÜR IRGENDEINEN ANSPRUCH, SCHÄDEN ODER SONSTIGE HAFTUNG HAFTBAR, UNABHÄNGIG DAVON, OB IN EINER KLAGE AUS VERTRAG, DELIKT ODER SONSTIGEM, ENTSTEHEND AUS, IM HINBLICK AUF ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN TRANSAKTIONEN IN DER SOFTWARE.