1
2

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 1 year has passed since last update.

Symfony ComponentAdvent Calendar 2022

Day 11

サクッとメールを送る、"Mailer"

Last updated at Posted at 2022-12-10

Symfony Component Advent Calendar 2022の11日目の記事です。

最初に

SymfonyはPHPのフレームワークのひとつです。しかし、公式サイトの説明文には

Symfony is a set of PHP Components, a Web Application framework, a Philosophy, and a Community — all working together in harmony.
(SymfonyはPHPコンポーネントのセットで、Webアプリケーションフレームワークで、哲学、そしてコミュニティです。それらがハーモニーを奏でながら動作しています。)

と書かれている通り、PHPコンポーネントのセットで、たくさんのコンポーネントを提供しており、それらを組み合わせてひとつのフレームワークとして動作しています。Symfonyのコンポーネントは、Symfony上だけで動作するのではなく、他のPHPフレームワークやアプリケーションでも動作している強力なものが揃っています。

今回はそれらの中から、役立ちそうなもの・お薦めしたいものを紹介していきたいと思います。

※記事内ではautoloadのインポートは省略します。

サクッとメールを送る、"Mailer"

Mailerは、メールを送るコンポーネントです。以前はSwiftMailerというのを利用していましたが、5.3からはこのMailerが使われるようになりました。Symfony以外でも動作しますし、Laravelのメール送信機能もこのMailerを使っています。

インストール

composer require symfony/mailer

DSNの設定

Mailerを使う際、DSNを設定する必要があります。Mailerインストール時にmailer.yamlが以下のように作成されます。

config/packages/mailer.yaml
framework:
    mailer:
        dsn: '%env(MAILER_DSN)%'

よって、.envMAILER_DSNに利用したいDSNを設定します。

.env
# SMTPの場合
MAILER_DSN=smtp://{ユーザ名}:{パスワード}@{SMTPホスト}:{ポート}

# sendmailの場合
MAILER_DSN=sendmail://default

# php.ini準拠の場合
MAILER_DSN=native://default

他にもいくつかDSNが用意されていますが、それぞれ追加のコンポーネントをインストールする必要があります。

メールの送信

メールの送信はいたって簡単で、Emailオブジェクトを作り、各プロパティの設定を行った後で、Mailerオブジェクトで送信します。

    public function create(MailerInterface $mailer): Response
    {
        $email = new Email();
        $email
            ->from('Fromのメールアドレス')
            ->to('Toのメールアドレス')
            ->text('メール文言')
            ->html('HTMLメール文言')
            ->attachFromPath('ファイルパス', 'ファイル名', 'MIMEタイプ') // 添付ファイル
        ;
        
        $mailer->send($email);
    }

Twigの利用

Twigを利用している場合、TemplateEmailクラスを使うことで、テキスト・HTMLメール文言のテンプレートからメール文言を作成することができます。


$email = new TemplateEmail();
$email
    ->htmlTemplate('email/registered.html.twig') // HTMLメール文言
    ->textTemplate('email/registered.txt.twig') // テキストメール文言
;

まとめ

今回はMailerを紹介しました。メール送信機能なので、他のライブラリと大きく違うところはないですが、Symfonyでは必要な箇所にサクッと注入できて便利です。他にもマニアックな機能があったりするので、ぜひ公式ドキュメントをご覧ください。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?