English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
- Uppgradering
- Introduktion
- Installation
- Användning (Utan Laravel)
- Användning (Med Laravel)
- Konfiguration
- Stödriktlinjer
- Licens - MIT Licens
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 LaravelMJML::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 HTMLMJML::minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>');
Installation
-
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örtinstall,update, ellerdump-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
allatt 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::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 -
Nästa steg, installera PHP-paketet genom att köra följande composer-kommando:
composer require defectivecode/mjml -
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:
preprocessors- Detta alternativ är inte tillgängligt. Vänligen öppna en pull request om du vill lägga till detta alternativ.minifyOptions- Vi använder en lättvikts PHP-baserad minifierare istället förhtml-minifier. Minifieraren tar bort kommentarer (förutom Outlook-villkor), kollapsar vitrymd och tar bort vitrymd mellan taggar.
Typsnitt
Vårt paket använder följande typsnitt som standard:
- 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
Du kan ändra typsnitten genom att använda följande metoder:
addFont(string $font, string $url)- Lägg till ett typsnitt till listan av typsnitt.removeFont(string $font)- Ta bort ett typsnitt från listan av typsnitt.setFonts(array $fonts)- Ställ in listan av typsnitt. Du bör tillhandahålla en array av typsnitt i detta format:['font-name' => 'font-url'].
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:
- indentSize: 2
- wrapAttributesIndentSize: 2
- maxPreserveNewline: 0
- preserveNewlines: false
Även om
js-beautifyanvä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:
setBeautifyOptions(array $options)- Ställ injs-beautify-alternativen.addBeautifyOption(string $option, mixed $value)- Lägger till ettjs-beautify-alternativ.removeBeautifyOption(string $option)- Tar bort ettjs-beautify-alternativ.
Minifiera
Vårt paket kommer att minifiera HTML-utdata när det är aktiverat. Minifiering utför följande:
- Tar bort HTML-kommentarer (bevarar Outlook-villkorade kommentarer som
<!--[if mso]>) - Kollapsar flera vita tecken till enstaka mellanslag
- Tar bort vitrymd mellan HTML-taggar
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-minifierfö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:
strict- Ditt dokument genomgår validering och renderas inte om det har några felsoft- Ditt dokument genomgår validering och renderas, även om det har felskip- Ditt dokument renderas utan att genomgå validering.
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:
setJuiceOptions(array $options)- Ställ in juice-alternativen.addJuiceOption(string $option, mixed $value)- Lägger till ett juice-alternativ.removeJuiceOption(string $option)- Tar bort ett juice-alternativ.setJuicePreserveTags(array $tags)- Ställ in juice-bevarande taggar.addJuicePreserveTag(string $tag, mixed $value)- Lägger till en juice-bevarande tagg.removeJuicePreserveTag(string $tag)- Tar bort en juice-bevarande tagg.
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.