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

업그레이드

이전 버전에서 업그레이드하는 경우, 업그레이드 가이드를 참조하여 파괴적인 변경 사항 및 마이그레이션 단계를 확인하세요.

소개

MJML은 반응형 이메일 코딩 과정의 단순화를 위해 특별히 설계된 마크업 언어입니다. 그의 의미론적 문법은 용이성과 간편함을 보장하며, 방대한 표준 구성 요소 라이브러리는 개발 속도를 높이고 이메일 코드베이스의 복잡성을 줄입니다. MJML의 오픈 소스 엔진은 모범 사례를 준수하는 고품질의 반응형 HTML을 생성합니다. Outlook 사용 시 겪었던 불편함이 있었다면, 이 패키지는 당신을 위해 맞춤 제작되었습니다.

우리의 MJML 구현은 공식 MJML API를 위한 래퍼 역할을 합니다. 이를 통해 MJML을 PHP 내에서 직접 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과 미니파이드 HTML
MJML::minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

설치

  1. 먼저 composer.json 파일에 다음 내용을 추가하여 패키지가 설치될 때 운영 체제에 맞는 올바른 바이너리를 다운로드하도록 지시합니다. 바이너리는 install, update, 또는 dump-autoload 명령을 실행한 후 다운로드됩니다.

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

    MJML 바이너리는 컴포저 설치 또는 업데이트 과정에서 우리의 CDN에서 가져와 패키지의 "bin" 폴더에 저장됩니다. 로컬 및 프로덕션 환경 모두에 대해 필요한 바이너리가 로드되어 있는지 확인하세요.

    기본적으로 all은 우리가 지원하는 모든 바이너리를 다운로드합니다. 대역폭과 설치 시간을 절약하기 위해 필요한 운영 체제와 아키텍처로 범위를 좁히는 것을 권장합니다. 사용 가능한 바이너리는 다음과 같습니다.

    운영 체제 아키텍처 Composer 포스트 업데이트 명령
    전체 전체 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. 다음으로, 다음 composer 명령어를 실행하여 PHP 패키지를 설치합니다:

    composer require defectivecode/mjml
  3. 그게 전부입니다! 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 패키지와 동일한 구성을 따르지만 다음 사항을 제외합니다:

글꼴

우리의 패키지는 기본적으로 다음 글꼴을 사용합니다:

다음 메서드를 사용하여 글꼴을 변경할 수 있습니다:

주석

주석은 기본적으로 유지됩니다. 주석을 제거하려면 removeComments() 메서드를 사용할 수 있습니다.

removeComments()를 호출하여 주석을 유지하는 keepComments() 메서드로 되돌릴 수도 있습니다.

포함 무시

기본적으로 우리의 패키지는 mj-include 태그를 무시합니다. 이는 MJML 5의 보다 안전한 기본값과 일치합니다. 포함을 사용하려면 ignoreIncludes(false)를 호출하세요.

포함을 활성화할 때는 filePath(string $path)를 기본 디렉터리로 사용하고 includePath(string|array|null $path)를 추가 포함 디렉터리를 허용합니다.

미화

우리의 패키지는 js-beautify를 사용하여 HTML을 미화합니다. MJML 5.2 또한 내부적으로 js-beautify를 사용하지만, 이 패키지는 래퍼 수준의 미화를 유지하여 사용자 정의 PHP beautifyOptions가 계속 작동합니다. 기본 옵션은 다음과 같습니다:

js-beautify는 옵션을 제공하기 위해 snake_case를 사용하지만, 우리 패키지를 사용할 때는 camelCase를 사용하세요. 우리는 패키지를 다른 구성 옵션과 일관되게 유지하기 위해 이 선택을 했습니다. 우리의 패키지는 자동으로 camelCase 옵션을 snake_case로 변환합니다.

다음 메서드를 사용하여 유효한 js-beautify 구성으로 이러한 옵션을 재정의할 수 있습니다:

미니파이

우리의 패키지는 활성화될 때 HTML 출력을 미니파이합니다. 미니파이는 다음을 수행합니다:

minify(bool $minify) 메서드를 호출하여 미니파이를 활성화하거나 비활성화할 수 있습니다.

왜 PHP 기반의 미니파이인가요? MJML 5는 더 이상 오래된 취약한 html-minifier 패키지를 사용하지 않습니다. 이 패키지는 여전히 2.x 버전에서 도입된 출력 동작을 유지하기 위해 PHP에서 미니파이를 수행합니다. MJML 5의 네이티브 htmlnano/cssnano 미니파이 옵션이 필요하면, 요구되는 옵션 형식을 사용하여 문제를 개시하세요.

유효성 검사 수준

우리의 패키지는 기본적으로 soft 유효성 검사 수준을 사용하여 MJML을 검사합니다. 이는 validationLevel(ValidationLevel $validationLevel) 메서드를 사용하여 변경할 수 있습니다. 사용 가능한 유효성 검사 수준은 다음과 같습니다:

파일 경로

우리의 패키지는 기본적으로 . 디렉토리를 사용합니다. filePath(string $path) 메서드를 호출하여 이를 변경할 수 있습니다.

MJML 5는 filePath를 포함 샌드박스 기본으로 취급합니다. 포함이 활성화되어 있는 경우, filePath 외부의 경로는 명시적으로 includePath(string|array|null $path)로 허용되지 않는 한 거부됩니다.

주스

기본적으로 우리는 어떤 주스 옵션도 제공하지 않습니다. 다음 메서드를 사용하여 주스 옵션을 추가할 수 있습니다:

지원 지침

우리의 오픈 소스 패키지를 선택해 주셔서 감사합니다! 이 지원 지침을 확인하는데 잠시 시간을 할애해 주세요. 이 지침은 우리 프로젝트를 최대한 활용하는 데 도움이 될 것입니다.

커뮤니티 주도 지원

우리의 오픈 소스 프로젝트는 훌륭한 커뮤니티에 의해 구동됩니다. 질문이 있거나 도움이 필요하다면 StackOverflow와 다른 온라인 리소스가 최선의 선택입니다.

버그 및 기능 우선순위

오픈 소스 프로젝트를 관리하는 현실은 모든 보고된 버그나 기능 요청을 즉시 처리할 수 없다는 것입니다. 우리는 문제를 다음과 같은 순서로 우선 처리합니다:

1. 유료 제품에 영향을 주는 버그

우리의 유료 제품에 영향을 미치는 버그는 항상 최우선 순위입니다. 경우에 따라 우리에게 직접적인 영향을 미치는 버그만 처리할 수도 있습니다.

2. 커뮤니티 풀 리퀘스트

버그를 발견하고 해결책이 있다면, 풀 리퀘스트를 제출해 주세요. 우리 제품에 영향을 미치는 문제 다음으로, 이러한 커뮤니티 주도 수정을 우선적으로 처리합니다. 리뷰하고 승인된 후, 귀하의 해결책을 병합하고 기여를 인정할 것입니다.

3. 재정적 지원

언급된 범주 외의 문제에 대해서는 해결을 위한 자금을 기부할 수 있습니다. 각 열려 있는 문제는 재정적으로 기여할 수 있는 주문 양식에 연결되어 있습니다. 제공된 자금 금액에 따라 이러한 문제를 우선 처리합니다.

커뮤니티 기여

오픈 소스는 커뮤니티가 활발할 때 성장합니다. 버그를 수정하지 않더라도 코드 개선, 문서 업데이트, 튜토리얼, 또는 커뮤니티 채널에서 다른 사람들을 도와주는 방식으로 기여하는 것을 고려해 보세요. 우리는 모두가 커뮤니티로서 오픈 소스 작업을 지원하는 것을 강력히 권장합니다.

다시 말해, DefectiveCode는 유료 제품에 영향을 미치는 정도, 커뮤니티 풀 리퀘스트 및 문제에 대한 재정적 지원을 기반으로 버그를 우선 처리할 것입니다.

라이선스 - MIT 라이선스

Copyright © Defective Code, LLC. 모든 권리 보유.

본 소프트웨어 및 관련 문서 파일(이하 "소프트웨어")의 사본을 얻은 모든 개인에게 무료로 사용 권한이 부여되며, 소프트웨어를 제한 없이 사용할 수 있습니다. 여기에는 소프트웨어를 사용, 복사, 수정, 병합, 게시, 배포, 서브 라이센스 및/또는 판매하는 권리가 포함되며, 소프트웨어가 제공된 사람에게 그러한 권한을 허용하는 것이 포함됩니다. 단, 다음 조건을 준수해야 합니다:

위의 저작권 고지 및 이 사용 허가 고지는 소프트웨어의 모든 복사본 또는 상당 부분에 포함되어야 합니다.

소프트웨어는 "있는 그대로" 제공되며, 명시적이거나 암시적인 어떤 종류의 보증도 없이 제공됩니다. 여기에는 상업성, 특정 목적에 대한 적합성 및 비침해성에 대한 보증이 포함되지만 이에 국한되지 않습니다. 어떤 경우에도 저자나 저작권자는 계약, 불법행위 또는 기타 방식으로 소프트웨어 또는 소프트웨어의 사용이나 기타 거래와 관련하여 발생하는 어떤 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다.