4
5

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 3 years have passed since last update.

Laravelでmailgunを使いメール送信してみる

Last updated at Posted at 2020-08-17

mailgunアカウント登録

mailgunのAPIを使うにはアカウント登録が必要です。
公式ページにアクセスし「Start Sending」をクリックしてください。

20200807.png

アカウント登録ページが表示されます。
必要情報を入力してください。
「Add payment info now」のチェックを外しておけば、クレジットカード情報は入力しなくて済みます。
※後から有償版に切り替えたい場合は、ダッシュボードの「Account Settings」>「Billing plan」から切り替えることができます。

20200807_2.png

アカウントを登録すると、公式からメールが2通届きます。
「Hi [登録者名], please verify your Mailgun account」のメールの方に記載されているURLをクリックしてメール認証を行います。

20200807_4.png

次に認証コードの登録を行います。
画像をなくしてしまったのですが、メール認証を行うと携帯番号を入力する画面が表示され、電話番号の入力を求められます。番号を入力して認証コードの送信依頼を行うと、番号を入力した端末に認証コードが送信されます。
送信された認証コードを、「Verlflcation Code」に入力して「Validate」を押してください。

20200807_5.png

認証に成功してダッシュボード画面が表示されればアカウント登録は完了です。

20200807_6.png

Laravelの下準備

Guzzle HTTPライブラリを入れる

以下のコマンドを実行します。

composer require guzzlehttp/guzzle

.envファイルに設定を記述

ドメインの確認

ダッシュボード画面から「Sending」>「Domains」をクリックします。
「Name」以下に表示されているものがドメインとなります。

20200807_7.png

API keyの確認

「Name」のドメインをクリックし、APIの「Select」>「cURL」をクリックするとAPI keyを確認することができます。

20200807_8.png

.envに記述

  • MAIL_DRIVER
    • mailgunと記述します
  • MAILGUN_DOMAIN
    • ドメインを記述します
  • MAILGUN_SECRET
    • API keyを記述します

※API keyやドメインをコピペするときに、最後に半角スペースなどが入らないように気を付けてください。

MAIL_DRIVER=mailgun
MAILGUN_DOMAIN=YOUR_MAILGUN_DOMAIN
MAILGUN_SECRET=YOUR_SECRET_KEY

これでLaravelの設定は完了です。

メール受信設定

ダッシュボード画面から「Sending」>「Domains」をクリックし、「Authorized Recipients」の「Email address」に受信するメールアドレスを入力して「Save Recipient」を押します。

20200814_3.png

入力したメールアドレス宛に「Would you like to receive emails from sankosc on Mailgun?」というタイトルのメールが届くので、「I Agree 」を押します。

20200814.png

Confirm画面が表示されるので「Yes」を押します。

20200814_1.png

Successと表示されれば受信設定は完了です。

20200814_2.png

メール送信

実装

以下のコマンドを実行します。

php artisan make:mail MailgunTest

app/Mail以下に生成されたMailgunTest.phpを編集していきます。

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class MailgunTest extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct()
    {
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('mails.mail')
        ->text('mails.mail')
        ->subject('タイトル')
        ->with([
            'text' => '本文',
          ]);
    }
}

buildメソッド内でメールテンプレートとなるviewファイルに、メールのタイトルと本文を記述しています。

次にresources/views以下にmailsフォルダを作成し、mail.blade.phpファイルを追加して以下のように編集します。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
  </head>
  <body>{{$text}}</body>
</html>

送信テスト

tinkerから送信テストをしてみます。

php artisan tinker
Psy Shell v0.10.4 (PHP 7.2.15 — cli) by Justin Hileman
>>> \Mail::to('送信先アドレス')->send(new App\Mail\MailgunTest());
=> null

メールが届きました。

20200817.png

4
5
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
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?