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

Uppgradering

Om du uppgraderar från en tidigare version, vänligen se Uppgraderingsguiden för brytande förändringar och migrationssteg.

Introduktion

MJML är ett markup-språk som är speciellt utformat för att förenkla processen att koda responsiva e-postmeddelanden. Dess semantiska syntax säkerställer lätthet och enkelhet, medan dess omfattande bibliotek av standardkomponenter påskyndar utvecklingen och minskar komplexiteten i din e-postkodbas. Den öppna källkodsenginen av MJML genererar högkvalitativ, responsiv HTML som följer bästa praxis. Om du har upplevt frustrationen av att arbeta med Outlook, är detta paket skräddarsytt för dig.

Vår MJML-implementering fungerar som ett omslag för den officiella MJML-API:en. Det möjliggör bekväm kompilering av MJML till HTML direkt inom PHP, utan behov av NodeJS. Detta paket är idealiskt för PHP-applikationer som vill integrera MJML utan krånglet med att installera NodeJS och MJML CLI.

Exempel

// Utan Laravel
(new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Minifierad 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>'
);
 
// Med Laravel
MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Med Laravel och minifierad HTML
MJML::minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Installation

  1. Först lägg till följande i din composer.json-fil för att instruera vårt paket att hämta de korrekta binärerna för ditt operativsystem när vårt paket installeras. Binärerna laddas ner efter att du har kört install, update, eller dump-autoload.

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

    MJML-binären kommer att hämtas från vår CDN och sparas i "bin"-mappen av detta paket under composer-installationen eller uppdateringen. Säkerställ att du har de nödvändiga binärerna laddade för både dina lokala och produktionsmiljöer.

    Som standard kommer all att hämta alla binärer vi stöder. Vi rekommenderar att begränsa detta till de operativsystem och arkitekturer du behöver för att spara på bandbredd och installationstider. Följande är de tillgängliga binärerna.

    Operativsystem Arkitektur Composer Post Update Kommando
    Alla Alla 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. Nästa steg, installera PHP-paketet genom att köra följande composer-kommando:

    composer require defectivecode/mjml
  3. Det var allt! Om du använder Laravel kommer vårt paket automatiskt att installeras med Laravel's paketupptäcktsfunktion.

Användning (Utan Laravel)

Se användningen med Laravel nedan om du använder Laravel.

Rendering av MJML

För att rendera MJML, skicka helt enkelt din MJML-sträng till render-metoden:

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>'
);

Validering av MJML

För att validera MJML, skicka helt enkelt din MJML-sträng till isValid-metoden:

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>'
);

Användning (Med Laravel)

Rendering av MJML

För att rendera MJML, skicka helt enkelt din MJML-sträng till render på MJML-facaden:

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>'
);

Validering av MJML

För att validera MJML, skicka helt enkelt din MJML-sträng till isValid-metoden på MJML-facaden:

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>'
);

Konfiguration

Du kan publicera konfigurationsfilen med följande kommando:

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

Detta skapar en mjml.php konfigurationsfil i din config-mapp. Alla alternativ som listas i konfigurationsfilen skickas till config-objektet när du använder MJML-facaden.

Konfiguration

Alla konfigurationsalternativ kan ställas in genom att kalla följande metoder direkt på MJML-objektet.

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>'
);

Vårt paket följer den samma konfigurationen som det officiella MJML-paketet bortsett från följande:

Typsnitt

Vårt paket använder följande typsnitt som standard:

Du kan ändra typsnitten genom att använda följande metoder:

Kommentarer

Kommentarer bevaras som standard. Om du vill ta bort kommentarer kan du använda removeComments()-metoden.

Du kan också återgå till removeComments() genom att kalla på keepComments()-metoden.

Ignorera inklusive

Som standard kommer vårt paket att inkludera eventuella mj-include-taggar. Du kan justera detta beteende genom att kalla ignoreIncludes(bool $ignore)-metoden.

Försköna

Vårt paket kommer att försköna HTML:en med js-beautify med följande standardalternativ:

Även om js-beautify använder snake_case för att tillhandahålla alternativ, bör du använda camelCase när du använder vårt paket. Vi gjorde detta val för att hålla vårt paket konsekvent med resten av konfigurationsalternativen. Vårt paket kommer automatiskt att konvertera camelCase-alternativen till snake_case.

Du kan åsidosätta något av dessa alternativ genom att tillhandahålla en giltig js-beautify konfiguration med följande metoder:

Minifiera

Vårt paket kommer att minifiera HTML-utdata när det är aktiverat. Minifiering utför följande:

Du kan aktivera eller inaktivera minifiering genom att kalla minify(bool $minify)-metoden.

Varför PHP-baserad minifiering? Det officiella MJML-paketet använder html-minifier för minifiering, vilket har en känd ReDoS-sårbarhet (CVE-2022-37620) utan någon fix tillgänglig då paketet inte underhålls. För att undvika att bunta sårbara beroenden, flyttade vi minifieringen till PHP med en lättvikts, säker implementation.

Valideringsnivå

Vårt paket kommer att validera MJML med soft valideringsnivå som standard. Du kan ändra detta genom att använda metoden validationLevel(ValidationLevel $validationLevel). Följande valideringsnivåer är tillgängliga:

Filväg

Vårt paket kommer att använda .-katalogen som standard. Du kan ändra detta genom att kalla metoden filePath(string $path).

Juice

Vi tillhandahåller inga juice-alternativ som standard. Du kan lägga till juice-alternativ genom att använda följande metoder:

Stödriktlinjer

Tack för att du valde vårt öppna källkodsprojekt! Vänligen ta ett ögonblick för att titta på dessa stödriktlinjer. De kommer att hjälpa dig att få ut det mesta av vårt projekt.

Gemenskapsdriven Stöd

Vårt öppna källkodsprojekt drivs av vår fantastiska gemenskap. Om du har frågor eller behöver hjälp, är StackOverflow och andra online-resurser dina bästa alternativ.

Buggar och Prioritering av Funktioner

Verkligheten av att hantera ett öppet källkodsprojekt betyder att vi inte kan ta itu med varje rapporterad bugg eller funktionsönskemål omedelbart. Vi prioriterar ärenden i följande ordning:

1. Buggar som Påverkar Våra Betalda Produkter

Buggar som påverkar våra betalda produkter kommer alltid att vara vår högsta prioritet. I vissa fall kan vi endast ta itu med buggar som påverkar oss direkt.

2. Gemenskaps Pull Begärningar

Om du har identifierat en bugg och har en lösning, vänligen skicka in en pull-begäran. Efter ärenden som påverkar våra produkter ger vi näst högsta prioritet till dessa gemenskapsdrivna lösningar. När de har granskats och godkänts, kommer vi att sammanfoga din lösning och kreditera ditt bidrag.

3. Ekonomiskt Stöd

För frågor utanför de nämnda kategorierna kan du välja att finansiera deras lösning. Varje öppen fråga är kopplad till ett beställningsformulär där du kan bidra ekonomiskt. Vi prioriterar dessa frågor baserat på det belopp som anges.

Gemenskapsbidrag

Öppen källkod blomstrar när dess gemenskap är aktiv. Även om du inte åtgärdar buggar, överväg att bidra genom kodförbättringar, dokumentationsuppdateringar, handledningar eller genom att hjälpa andra i gemenskapskanaler. Vi uppmuntrar starkt alla, som en gemenskap, att hjälpa till att stödja arbetet med öppen källkod.

För att upprepa, kommer DefectiveCode att prioritera buggar baserat på hur de påverkar våra betalda produkter, gemenskaps pull-begärningar, och det ekonomiska stöd som erhållits för problem.

Licens - MIT Licens

Copyright © Defective Code, LLC. Alla rättigheter förbehålles

Härmed beviljas tillstånd, kostnadsfritt, till varje person som erhåller en kopia av denna programvara och tillhörande dokumentationsfiler (”Programvaran”), att hantera Programvaran utan begränsningar, inklusive utan begränsning rätten att använda, kopiera, modifiera, sammanfoga, publicera, distribuera, underlicensiera och/eller sälja kopior av Programvaran, och att tillåta personer som Programvaran tillhandahålls till att göra det, med förbehåll för följande villkor:

Den ovanstående copyrightnotisen och denna tillståndsnotis ska inkluderas i alla kopior eller väsentliga delar av Programvaran.

PROGRAMVARAN TILLHANDAHÅLLS "I BEFINTLIGT SKICK", UTAN NÅGON SOM HELST GARANTI, VARE SIG UTTRYCKLIG ELLER UNDERFÖRSTÅDD, INKLUSIVE MEN INTE BEGRÄNSAT TILL GARANTIER FÖR SÄLJBARHET, LÄMPLIGHET FÖR ETT BESTÄMT ÄNDAMÅL OCH INTE KRÄNKNING. UNDER INGA OMSTÄNIGHETER SKA FÖRFATTARNA ELLER COPYRIGHTINNEHAVARNA ANSVARA FÖR NÅGON FORDRAN, SKADOR ELLER ANNAN ANSVARSSKYLDIGHET, VARE SIG I EN RÄTTSLIG ÅTGÄRD, SKADESTÅND ELLER ANNAT, SOM UPPSTÅR FRÅN, GENOM ELLER I SAMBAND MED PROGRAMVARAN ELLER ANVÄNDNINGEN ELLER ANDRA AFFÄRER I PROGRAMVARAN.