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

Yükseltme

Önceki bir sürümden yükseltiyorsanız, lütfen Yükseltme Kılavuzu için kırılma değişiklikleri ve geçiş adımları için bakın.

Giriş

MJML, yanıt veren e-postaların kodlanma sürecini basitleştirmek için özel olarak tasarlanmış bir işaretleme dilidir. Anlamlı sözdizimi, kolaylık ve basitlik sağlar ve standart bileşenlerin geniş kütüphanesi, geliştirmeyi hızlandırır ve e-posta kod tabanınızın karmaşıklığını azaltır. MJML’nin açık kaynak motoru, en iyi uygulamalara uygun yüksek kaliteli, yanıt veren HTML üretir. Outlook ile çalışma zorluğuna maruz kaldıysanız, bu paket tam size göre.

Bizim MJML uygulamamız, resmi MJML API'si için bir sarmalayıcı olarak hizmet vermektedir. Bu, PHP içinde doğrudan MJML'nin HTML'ye derlenmesini kolaylaştırır, NodeJS gerektirmeden. Bu paket, NodeJS ve MJML CLI yükleme zahmetinden kurtulmak isteyen PHP uygulamaları için idealdir.

Örnek

// Laravel olmadan
(new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Küçültülmüş 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 ile
MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Laravel ile ve küçültülmüş HTML
MJML::minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Kurulum

  1. İlk olarak, composer.json dosyanıza aşağıdakileri ekleyin, böylece paketinizi yüklerken, işletim sisteminiz için doğru ikili dosyaları alması için talimat verin. İkili dosyalar, install, update veya dump-autoload komutunu çalıştırdığınızda indirilecektir.

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

    MJML ikili dosyası, Composer'ın yüklenmesi veya güncellenmesi sırasında bu paketin "bin" klasörüne indirilecek ve saklanacaktır. Hem yerel hem de üretim ortamlarınız için gerekli ikili dosyaların yüklendiğinden emin olun.

    Varsayılan olarak, all desteklediğimiz tüm ikili dosyaları çekecektir. Bandwidth ve kurulum sürelerinden tasarruf etmek için bunu ihtiyacınız olan işletim ve mimari sistemlerle sınırlamanızı öneririz. Aşağıda mevcut olan ikili dosyalar listelenmiştir.

    İşletim Sistemi Mimari Composer Post Güncelleme Komutu
    Hepsi Hepsi 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. Ardından, aşağıdaki Composer komutunu çalıştırarak PHP paketini yükleyin:

    composer require defectivecode/mjml
  3. Hepsi bu kadar! Laravel kullanıyorsanız, paketimiz otomatik olarak Laravel'in paket keşfi kullanarak yüklenecektir.

Kullanım (Laravel Olmadan)

Laravel kullanıyorsanız, aşağıda Laravel ile kullanımı görebilirsiniz.

MJML Renderlama

MJML renderlamak için, MJML dizenizi render metoduna iletmeniz yeterlidir:

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 Doğrulama

MJML'yi doğrulamak için, MJML dizenizi isValid metoduna iletmeniz yeterlidir:

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

Kullanım (Laravel ile)

MJML Renderlama

MJML renderlamak için, MJML dizenizi MJML facadı üzerindeki render metoduna iletmeniz yeterlidir:

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 Doğrulama

MJML'yi doğrulamak için, MJML dizenizi MJML facadı üzerindeki isValid metoduna iletmeniz yeterlidir:

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

Konfigürasyon

Aşağıdaki komutu kullanarak konfigürasyon dosyasını yayımlayabilirsiniz:

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

Bu, config klasörünüzde bir mjml.php konfigürasyon dosyası oluşturacaktır. Konfigürasyon dosyasında listelenen tüm seçenekler, MJML facadını kullandığınızda config nesnesine geçirilir.

Konfigürasyon

Tüm konfigürasyon seçenekleri, MJML nesnesi üzerinde aşağıdaki yöntemleri doğrudan arayarak ayarlanabilir.

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

Paketimiz, resmi MJML paketinin aynı konfigürasyonu izler, aşağıdakiler hariç:

Fontlar

Paketimiz varsayılan olarak aşağıdaki fontları kullanır:

Fontları, aşağıdaki yöntemleri kullanarak değiştirebilirsiniz:

Yorumlar

Yorumlar varsayılan olarak korunur. Yorumları kaldırmak istiyorsanız, removeComments() metodunu kullanabilirsiniz.

removeComments() metodunu çağırarak keepComments() ile de eski haline döndürebilirsiniz.

Dahil Etmeyi Yoksay

Varsayılan olarak, paketimiz herhangi bir mj-include etiketini dahil edecektir. Bu davranışı, ignoreIncludes(bool $ignore) metodunu çağırarak ayarlayabilirsiniz.

Güzelleştirme

Paketimiz, aşağıdaki varsayılan seçeneklerle js-beautify kullanarak HTML'yi güzelleştirecektir:

js-beautify seçenekleri sağlarken snake_case kullanırken, paketimizi kullanırken camelCase kullanmalısınız. Bu seçimi, paketimizi diğer konfigürasyon seçenekleriyle uyumlu hale getirmek için yaptık. Paketimiz, camelCase seçeneklerini otomatik olarak snake_case'e dönüştürecektir.

Bu seçeneklerden herhangi birini, geçerli bir js-beautify yapılandırması sağlayarak geçersiz kılabilirsiniz:

Küçültme

Paketimiz, etkinleştirildiğinde HTML çıktısını küçültecektir. Küçültme şunları gerçekleştirir:

Küçültmeyi etkinleştirmek veya devre dışı bırakmak için minify(bool $minify) metodunu çağırabilirsiniz.

Neden PHP tabanlı küçültme? Resmi MJML paketi küçültme için html-minifier kullanır, bu bilinen bir ReDoS güvenlik açığı (CVE-2022-37620) vardır ve düzeltme mevcut değildir çünkü paket bakımsızdır. Güvenlik açığı olan bağımlılıkları paketleyip dağıtmaktan kaçınmak için, küçültmeyi hafif ve güvenli bir uygulama kullanarak PHP'ye taşıdık.

Doğrulama Seviyesi

Paketimiz varsayılan olarak MJML'yi soft doğrulama seviyesi ile doğrulayacaktır. Bunu validationLevel(ValidationLevel $validationLevel) metodunu kullanarak değiştirebilirsiniz. Aşağıdaki doğrulama seviyeleri mevcuttur:

Dosya Yolu

Paketimiz varsayılan olarak . dizinini kullanacaktır. Bunu filePath(string $path) metodunu çağırarak değiştirebilirsiniz.

Juice

Varsayılan olarak herhangi bir juice seçeneği sağlamıyoruz. Aşağıdaki yöntemleri kullanarak juice seçenekleri ekleyebilirsiniz:

Destek Kılavuzları

Açık kaynak paketimizi seçtiğiniz için teşekkürler! Lütfen bu destek kılavuzlarına bir göz atmak için biraz zaman ayırın. Bu kılavuzlar, projemizden en iyi şekilde yararlanmanıza yardımcı olacaktır.

Topluluk Tarafından Destek

Açık kaynak projemiz, harika topluluğumuz tarafından destekleniyor. Sorularınız varsa veya yardıma ihtiyacınız varsa, StackOverflow ve diğer çevrimiçi kaynaklar en iyi seçeneklerinizdir.

Hatalar ve Özellik Önceliklendirmesi

Açık kaynak projesini yönetmenin gerçeği, bildirilmiş olan her hata veya özellik talebini hemen ele alamayacağımızdır. Sorunları aşağıdaki sırayla önceliklendiriyoruz:

1. Ücretli Ürünlerimizi Etkileyen Hatalar

Ücretli ürünlerimizi etkileyen hatalar her zaman en yüksek önceliğimiz olacaktır. Bazı durumlarda, yalnızca bizim doğrudan etkilendiğimiz hataları ele alabiliriz.

2. Topluluk Çekme Talepleri

Bir hata tespit ettiyseniz ve bir çözümünüz varsa, lütfen bir çekme talebi gönderin. Ürünlerimizi etkileyen sorunlardan sonra, bu topluluk odaklı düzeltmelere en yüksek önceliği veriyoruz. İncelendikten ve onaylandıktan sonra, çözümünüzü birleştirecek ve katkınızı takdir edeceğiz.

3. Finansal Destek

Belirtilen kategorilerin dışındaki sorunlar için, çözümünü finanse etmeyi tercih edebilirsiniz. Her açık sorun, maddi katkıda bulunabileceğiniz bir sipariş formuna bağlıdır. Bu sorunları sağlanan finansman miktarına göre önceliklendiriyoruz.

Topluluk Katkıları

Açık kaynak, topluluğu aktif olduğunda gelişir. Hataları düzeltmiyor olsanız bile, kod iyileştirmeleri, belgeleri güncellemeler, öğreticiler aracılığıyla veya topluluk kanallarında başkalarına yardımcı olarak katkıda bulunmayı düşünün. Herkesi, bir topluluk olarak, açık kaynak çalışmalarını desteklemeye teşvik ediyoruz.

Tekrar belirtmek gerekirse, DefectiveCode, hataları nasıl etkilediklerine göre önceliklendirecektir; bu, ücretli ürünlerimize etkisi, topluluk çekme talepleri ve sorunlar için alınan finansal desteği içermektedir.

Lisans - MIT Lisansı

Telif Hakkı © Defective Code, LLC. Tüm hakları saklıdır

Bu yazılım ve ilgili belge dosyalarının (bundan böyle "Yazılım" olarak anılacaktır) bir kopyasını edinen herhangi bir kişiye, Yazılım'da kısıtlama olmaksızın işlem yapma izni verilmiştir; bu izin, Yazılım'ı kullanma, kopyalama, değiştirme, birleştirme, yayımlama, dağıtma, alt lisans verme ve/veya Yazılım'ın kopyalarını satma haklarını da içermektedir ve Yazılım'ın sağlandığı kişilerin bunu yapmasına izin verilmektedir; ancak, aşağıdaki koşullara tabi olacaktır:

Yukarıdaki telif hakkı bildirimi ve bu izin bildirimi, Yazılım'ın tüm kopyalarında veya önemli kısımlarında yer almalıdır.

YAZILIM "OLDUĞU GİBİ" SAĞLANMAKTADIR; HERHANGİ BİR TÜRDE, AÇIK YA DA ZIMNİ, SATILABİLİRLİK, BELİRLİ BİR AMACA UYGUNLUK VEYA HUKUKİ İHLAL GARANTİSİ DE DAHİL OLMAK ÜZERE HİÇBİR GARANTİ VERMEZ. YAZARLAR VEYA TELİF HAKKI SAHİPLERİ, YAZILIM’DAN veya YAZILIM'IN KULLANIMI veya DİĞER İŞLEMLERİNDEN KAYNAKLANAN HERHANGİ BİR TALEP, ZARAR VEYA DİĞER YÜKÜMDÜRLÜKLERDEN SORUMLU TUTULAMAZ; İSTER SÖZLEŞME TASARISI, SORUMLULUK, YA DA BAŞKA BİR ŞEKİLDE OLSUN.