Help us understand the problem. What is going on with this article?

Symfony4.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で指定したディレクトリにテンプレートファイルが入っています。デフォルトの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メールが送信されます。

IMG_1333.PNG

良い感じでMarkdownを解析したメールを受け取ることができます。上記の実装サンプルに追加でリストや引用もつけてみましたが、ちゃんと解析されて表示されます。

すっきりとしたレイアウトでテンプレートも不要。Markdownでそれなりに体裁を整えたメールが送信できるので、サイト管理者などに送る通知メールには向いているかなと思いました。現場からは以上です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away