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에 대한 래퍼 역할을 합니다. PHP 내에서 MJML을 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과 함께 최소화된 HTMLMJML::minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>');
설치
-
먼저,
composer.json파일에 다음을 추가하여 패키지가 설치될 때 운영 체제에 맞는 올바른 바이너리를 가져오도록 지시합니다.
바이너리는install,update또는dump-autoload를 실행한 후 다운로드됩니다.{"post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]}MJML 바이너리는 컴포저의 설치 또는 업데이트 중에 CDN에서 가져와 이 패키지의 "bin" 폴더에 저장됩니다.
로컬 및 프로덕션 환경 모두에 필요한 바이너리가 로드되어 있는지 확인하십시오.기본적으로
all은 우리가 지원하는 모든 바이너리를 가져옵니다. 대역폭과 설치 시간을 절약하기 위해 필요한 운영 체제와 아키텍처 시스템으로 범위를 줄이는 것이 좋습니다.
다음은 사용 가능한 바이너리 목록입니다.운영 체제 아키텍처 Composer 포스트 업데이트 명령 모두 모두 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 -
다음으로, 다음 composer 명령을 실행하여 PHP 패키지를 설치합니다:
composer require defectivecode/mjml -
끝입니다! 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 패키지와 동일한 구성을 따릅니다. 단, 다음은 제외됩니다:
preprocessors- 이 옵션은 사용할 수 없습니다. 이 옵션을 추가하고 싶다면 풀 리퀘스트를 열어주세요.minifyOptions- 우리는html-minifier대신 경량 PHP 기반의 최소화 도구를 사용합니다. 최소화 도구는
댓글(Outlook 조건문 제외)을 제거하고, 공백을 압축하며, 태그 간의 공백을 제거합니다.
글꼴
우리의 패키지는 기본적으로 다음 글꼴을 사용합니다:
- 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
다음 메서드를 사용하여 글꼴을 변경할 수 있습니다:
addFont(string $font, string $url)- 글꼴을 목록에 추가합니다.removeFont(string$font)- 글꼴을 목록에서 제거합니다.setFonts(array $fonts)- 글꼴 목록을 설정합니다. 이 형식으로 글꼴 배열을 제공해야 합니다:['font-name' => 'font-url'].
주석
주석은 기본적으로 유지됩니다. 주석을 제거하려면 removeComments() 메서드를 사용할 수 있습니다.
또한 removeComments()를 되돌리려면 keepComments() 메서드를 호출하면 됩니다.
포함 무시
기본적으로 우리의 패키지는 모든 mj-include 태그를 포함합니다.
이 동작을 조정하려면 ignoreIncludes(bool $ignore) 메서드를 호출하면 됩니다.
미화
우리의 패키지는 js-beautify를 사용하여 HTML을 미화합니다.
다음은 기본 옵션입니다:
- indentSize: 2
- wrapAttributesIndentSize: 2
- maxPreserveNewline: 0
- preserveNewlines: false
js-beautify가 옵션을 제공하기 위해 snake_case를 사용하는 반면, 우리의 패키지를 사용할 때는 camelCase를 사용해야 합니다.
우리는 옵션의 일관성을 유지하기 위해 이러한 선택을 하였습니다. 우리의 패키지는 camelCase 옵션을 자동으로 snake_case로 변환합니다.
다음 메서드를 사용하여 이러한 옵션을 재정의할 수 있습니다:
setBeautifyOptions(array $options)-js-beautify옵션을 설정합니다.addBeautifyOption(string $option, mixed $value)-js-beautify옵션을 추가합니다.removeBeautifyOption(string $option)-js-beautify옵션을 제거합니다.
최소화
패키지에서 HTML 출력을 최소화할 수 있습니다. 최소화는 다음을 수행합니다:
- HTML 주석을 제거합니다(상태 조건 같은 Outlook 조건주석은 보존합니다,
<!--[if mso]>) - 여러 개의 공백 문자를 단일 공백으로 압축합니다
- HTML 태그 간의 공백을 제거합니다
minify(bool $minify) 메서드를 호출하여 최소화를 활성화하거나 비활성화할 수 있습니다.
Why PHP-based minification? 공식 MJML 패키지는 최소화에
html-minifier를 사용하는데, 이는
알려진 ReDoS 취약점 (CVE-2022-37620) 를 가지고 있으며, 패키지가 유지 관리되지 않기 때문에
수정 사항이 없습니다. 취약한 종속성을 번들링하지 않기 위해, 라이트웨이트하고 보안적인 구현을 사용하여 최소화를 PHP로 전환했습니다.
유효성 검사 수준
패키지는 기본적으로 soft 유효성 검사 수준을 사용하여 MJML을 검사합니다.
validationLevel(ValidationLevel $validationLevel) 메서드를 사용하여 이 수준을 변경할 수 있습니다. 사용 가능한 유효성 검사 수준은 다음과 같습니다:
strict- 문서가 유효성 검사를 통과하고 오류가 있는 경우 렌더링되지 않습니다soft- 문서가 유효성 검사를 통과하지만 오류가 있어도 렌더링됩니다skip- 문서가 유효성 검사를 통과하지 않고 렌더링됩니다.
파일 경로
패키지는 기본적으로 . 디렉터리를 사용합니다. filePath(string $path) 메서드를 호출하여 이를 변경할 수 있습니다.
주스
우리 패키지는 기본적으로 어떤 주스 옵션도 제공하지 않습니다.
다음 메서드를 사용하여 주스 옵션을 추가할 수 있습니다:
setJuiceOptions(array $options)- 주스 옵션을 설정합니다.addJuiceOption(string $option, mixed $value)- 주스 옵션을 추가합니다.removeJuiceOption(string $option)- 주스 옵션을 제거합니다.setJuicePreserveTags(array $tags)- 주스 보존 태그를 설정합니다.addJuicePreserveTag(string $tag, mixed $value)- 주스 보존 태그를 추가합니다.removeJuicePreserveTag(string $tag)- 주스 보존 태그를 제거합니다.
지원 지침
우리의 오픈 소스 패키지를 선택해 주셔서 감사합니다! 이 지원 지침을 확인하는데 잠시 시간을 할애해 주세요. 이 지침은 우리 프로젝트를 최대한 활용하는 데 도움이 될 것입니다.
커뮤니티 주도 지원
우리의 오픈 소스 프로젝트는 훌륭한 커뮤니티에 의해 구동됩니다. 질문이 있거나 도움이 필요하다면 StackOverflow와 다른 온라인 리소스가 최선의 선택입니다.
버그 및 기능 우선순위
오픈 소스 프로젝트를 관리하는 현실은 모든 보고된 버그나 기능 요청을 즉시 처리할 수 없다는 것입니다. 우리는 문제를 다음과 같은 순서로 우선 처리합니다:
1. 유료 제품에 영향을 주는 버그
우리의 유료 제품에 영향을 미치는 버그는 항상 최우선 순위입니다. 경우에 따라 우리에게 직접적인 영향을 미치는 버그만 처리할 수도 있습니다.
2. 커뮤니티 풀 리퀘스트
버그를 발견하고 해결책이 있다면, 풀 리퀘스트를 제출해 주세요. 우리 제품에 영향을 미치는 문제 다음으로, 이러한 커뮤니티 주도 수정을 우선적으로 처리합니다. 리뷰하고 승인된 후, 귀하의 해결책을 병합하고 기여를 인정할 것입니다.
3. 재정적 지원
언급된 범주 외의 문제에 대해서는 해결을 위한 자금을 기부할 수 있습니다. 각 열려 있는 문제는 재정적으로 기여할 수 있는 주문 양식에 연결되어 있습니다. 제공된 자금 금액에 따라 이러한 문제를 우선 처리합니다.
커뮤니티 기여
오픈 소스는 커뮤니티가 활발할 때 성장합니다. 버그를 수정하지 않더라도 코드 개선, 문서 업데이트, 튜토리얼, 또는 커뮤니티 채널에서 다른 사람들을 도와주는 방식으로 기여하는 것을 고려해 보세요. 우리는 모두가 커뮤니티로서 오픈 소스 작업을 지원하는 것을 강력히 권장합니다.
다시 말해, DefectiveCode는 유료 제품에 영향을 미치는 정도, 커뮤니티 풀 리퀘스트 및 문제에 대한 재정적 지원을 기반으로 버그를 우선 처리할 것입니다.
라이선스 - MIT 라이선스
Copyright © Defective Code, LLC. 모든 권리 보유.
본 소프트웨어 및 관련 문서 파일(이하 "소프트웨어")의 사본을 얻은 모든 개인에게 무료로 사용 권한이 부여되며, 소프트웨어를 제한 없이 사용할 수 있습니다. 여기에는 소프트웨어를 사용, 복사, 수정, 병합, 게시, 배포, 서브 라이센스 및/또는 판매하는 권리가 포함되며, 소프트웨어가 제공된 사람에게 그러한 권한을 허용하는 것이 포함됩니다. 단, 다음 조건을 준수해야 합니다:
위의 저작권 고지 및 이 사용 허가 고지는 소프트웨어의 모든 복사본 또는 상당 부분에 포함되어야 합니다.
소프트웨어는 "있는 그대로" 제공되며, 명시적이거나 암시적인 어떤 종류의 보증도 없이 제공됩니다. 여기에는 상업성, 특정 목적에 대한 적합성 및 비침해성에 대한 보증이 포함되지만 이에 국한되지 않습니다. 어떤 경우에도 저자나 저작권자는 계약, 불법행위 또는 기타 방식으로 소프트웨어 또는 소프트웨어의 사용이나 기타 거래와 관련하여 발생하는 어떤 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다.