2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SymfonyAdvent Calendar 2019

Day 20

Symfony4.4から導入されたNotificationEmailが気になったのでさわってみた

Posted at

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でそれなりに体裁を整えたメールが送信できるので、サイト管理者などに送る通知メールには向いているかなと思いました。現場からは以上です。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?