Symfony 4.4에서 도입 된 NotificationEmail이 신경이 쓰여서 만났습니다.

Symfony Advent Calendar 2019 20일째의 기사입니다.
Symfony4.4에서 소개 NotificationEmail . 『Notification인 Email이란 🤔』이 되었으므로, 실제로 만져 보았습니다.

NotificationEmail이란?



NotificationEmail은 Symfony의 메일 데이터 생성 클래스 중 하나입니다. TemplateEmail 의 아이 클래스로, 기본적으로는 TemplateEmail 클래스와 같은 사용법입니다. TemplateMail과 크게 다른 점은 템플릿 파일을 지정하지 않아도 좋고, theme이라는 프로퍼티가 생긴 것, markdown()이라는 메소드가 추가되어 있다는 것입니다.

템플릿 파일은 기본적으로 정의되며 vendor/symfony/twig-bridge/Resources/views/Email에 저장됩니다. 왼쪽 디렉토리의 theme에서 지정한 디렉토리에 템플릿 파일이 들어 있습니다. 기본 테마는 default이지만 default는 zurb_2를 가져 왔으며 Foundation for Emails 2을 사용하여 템플릿을 만들었습니다. Foundation for Emails2를 사용하면 눈부신 이메일을 만들 수 있습니다.

설치



설치는 composer를 사용하여 설치합니다.
composer require symfony/mailer
composer require twig/cssinliner-extra
composer require twig/inky-extra
composer require twig/markdown-extra
composer require erusev/parsedown

메일을 보내는 것만으로는 symfony/mailer만으로 충분합니다만, 인라인으로의 CSS수식, Markdown 기술 & 해석이 필요하기 때문에 복수 컴퍼넌트를 인스톨 할 필요가 있습니다.

구현


        $name = 'めもりー';

        $message = <<< MSG_EOR
![Symfony Logo](https://symfony.com/images/logos/header-logo.svg)
# こんにちは!
こんにちは。${name} ちゃん  
こちらはテストメッセージです  
SymfonyにNotificationEmailという機能が追加されました  
[Symfonyって](https://symfony.com/)  
MSG_EOR;

        $notificationEmail = new NotificationEmail();
        $email = $notificationEmail->from('from@***.co.jp')
            ->to('to@***.co.jp')
            ->subject('テスト送信です')
            ->markdown($message)
            ->action('NotificationEmailについてもっと詳しく', 'https://symfony.com/blog/new-in-symfony-4-4-notification-emails')
            ->importance(NotificationEmail::IMPORTANCE_HIGH)
            ;
        $this->mailer->send($email); // $this->mailerはDIコンテナでMailerInterfaceを刺してます。

NotificationEmail의 각 메소드이지만,


방법
설명


from()
From 주소를 지정합니다.

to()
To 주소를 지정합니다.

subject()
제목을 지정합니다.

markdown()
Markdown 형식의 본문을 지정합니다. 고유한 방법

action()
메일 하단에 지정한 문장, 링크로 버튼을 배치합니다. 고유한 방법

importance()
메일의 중요도를 지정합니다. 메일 제목 앞에 [HIGH]라는 문구가 들어갑니다. HIGH, MEDIUM, URGENT, LOW가 있습니다. 독자적인 방법

theme()
지정된 테마로 전환합니다. 자신의 방법. 사용하지 않을까요?


TemplateEmail의 아이 클래스이므로, 다른 TemplateEmail의 메소드도 사용할 수 있습니다만, 아마 사용하는 것은 없을 것입니다.

실행



실행하면 다음과 같은 HTML 메일이 전송됩니다.



좋은 느낌으로 Markdown을 분석한 이메일을 받을 수 있습니다. 상기의 구현 샘플에 추가로 리스트나 인용도 붙여 보았습니다만, 제대로 해석되어 표시됩니다.

깔끔한 레이아웃으로 템플릿도 불필요. Markdown에서 나름대로 체재를 정돈한 메일을 송신할 수 있으므로, 사이트 관리자등에게 보내는 통지 메일에는 적합하고 있을까라고 생각했습니다. 현장에서는 이상입니다.

좋은 웹페이지 즐겨찾기