LaravelはMailChimpというメール配信システムと連携させて、メルマガ・ニュースレターを送信できます。
次のような流れを、手軽に作ることができます。
- Laravel上でフォームを通じて、ユーザー登録してもらう
- Laravelのデータベースにユーザー情報を登録する
- 同時にMailChimpにもユーザー情報を登録する
- MailChimpを通じて、ユーザーにニュースレターなどを配信する
MailChimpは日本語版がないので、英語が苦手な方は、ちょっと使いにくいかもしれません。
英語に抵抗がなければ、おすすめしたいツール。
非常に便利で、コスパが良く(無料版もあります♪)、世界的に有名なメール配信システムです。
今回は、MailChimpとLaravelの基本的な連携方法を解説していきます。
LaravelとMailChimp連携方法:ユーザーにメルマガ・ニュースレターを手軽に配信する
Laravelのプロジェクトが既にあり、MailChimpでアカウントを作成してあるという想定で、説明を進めていきます。
もしまだMailChimpアカウントをお持ちでない場合には、下記のMailChimpのサイトから、アカウントを作成してください。
Laravelでのプロジェクトの作成方法は、下記の記事で解説しています。
アカウント作成後、Laravelのプロジェクト上で、下記の設定を進めていきます。
①ライブラリをインストール
laravel-newsletterというライブラリを使います。
まずは、ライブラリをインストールします。
1 |
composer require spatie/laravel-newsletter |
②設定ファイル作成
1 |
php artisan vendor:publish --provider="Spatie\Newsletter\NewsletterServiceProvider" |
③設定ファイルの確認
②で作成したファイルを確認します
config/newsletter.phpを開きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
<?php return [ /* * The driver to use to interact with MailChimp API. * You may use "log" or "null" to prevent calling the * API directly from your environment. */ 'driver' => env('MAILCHIMP_DRIVER', 'api'), /* * The API key of a MailChimp account. You can find yours at * https://us10.admin.mailchimp.com/account/api-key-popup/. */ 'apiKey' => env('MAILCHIMP_APIKEY'), /* * The listName to use when no listName has been specified in a method. */ 'defaultListName' => 'subscribers', /* * Here you can define properties of the lists. */ 'lists' => [ /* * This key is used to identify this list. It can be used * as the listName parameter provided in the various methods. * * You can set it to any string you want and you can add * as many lists as you want. */ 'subscribers' => [ /* * A MailChimp list id. Check the MailChimp docs if you don't know * how to get this value: * http://kb.mailchimp.com/lists/managing-subscribers/find-your-list-id. */ 'id' => env('MAILCHIMP_LIST_ID'), ], ], /* * If you're having trouble with https connections, set this to false. */ 'ssl' =>true, ]; |
設定ファイルに 'apiKey' => env('MAILCHIMP_APIKEY'), と 'id' => env('MAILCHIMP_LIST_ID'), があります。
この2つは、.envファイルに設定しておく必要があります。
設定方法は次のとおり。
MAILCHIMP_APIKEYの設定
MAILCHIMPにログイン後、左下をクリックし、accountを選択
さらにExtrasより、API keysを選択。API作成画面が表示するので【create A key】を選択して、新たにAPIキーを作成します。
APIキーが表示されるので、これをコピー。
.envファイルの MAILCHIMP_APIKEY=の後に貼り付けます。
MAILCHIMP_LIST_IDの設定
MAILCHIMPログイン後、Audienceクリック。
プルダウンからSettingを選択。
Audience name and defaultsを選択。
Audience IDをコピーします。
.envファイルの MAILCHIMP_LIST_ID=の後に貼り付けます。
SSLをFALSEに変更
開発環境の場合には、config/newsletter.phpの設定が 'ssl' =>true, だと、別途 ssl用の設定をしておかなければ、登録できません。
開発環境の場合は、 'ssl' =>false, にして、試してみてください。
④Laravelのコントローラーを作成
コントローラーを作成します。
1 |
php make:controller NewsletterController |
次のようにいれておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Newsletter; class NewsletterController extends Controller { public function index(){ return view('newsletter'); } public function store(Request $request){ Newsletter::subscribe($request->email); return back(); } } |
⑤Laravelのルート設定を追加
次の2つのルート設定を、routes/web.phpに追加します。
1 2 |
Route::get('/newsletter', 'NewsletterController@index')->name('newsletter.index'); Route::post('/newsletter/store', 'NewsletterController@store')->name('newsletter.store'); |
⑥Laravelのビューでフォームを作成
次に、Laravelのビューでフォームを作成します。
resources/viewsに newsletter.blade.phpファイルを作ります。
次のようなシンプルなフォームをいれておきます。
1 2 3 4 5 6 7 8 |
<form action="{{route('newsletter.store') }}" method="post"> @csrf <div class="form-group"> <label for="email">メールアドレス</label> <input type="email" name="email" id="email" class="form-control"> </div> <button type="submit" class="btn btn-primary">Submit</button> </form> |
*bootstrapを使ってフォームのデザインをしています。
⑦テストをする
フォームにメールアドレスを入力して、実際に登録できるかテストしてみてください。
/newsletterを開くと、次のようなシンプルなフォームが表示されます。
*もしbootstrapを入れていない場合には、見た目は変わります。
実際にメールアドレスを登録すると、MailChimpのコンタクトにも、メールアドレスが追加されています。
コンタクトを確認するには、MailChimpにログイン後、Audienceメニューから、All contactsを選択してください。
うまくいかない場合
下記コマンドで設定ファイルのキャッシュをクリアしてみてください。
1 |
php artisan config:clear |
開発環境の場合は、newsletter.phpファイルのSSLが ‘true’ となっていないか、チェックしてみてください。
さいごに
なお、Laravel側でもユーザー情報を保存したい場合には、Newscontrollerのstoreメソッドに、データベースにも保存する処理を書いておく必要があります。
この部分は、通常通りでOKです。
今回はここは省略しますが、もしご要望などあれば、記事を追加していきますね。
LaravelとMailChimp連携は、また色々と使ってみて、記事にしていきたいと思います。
MailChimpの登録はこちらをクリックしてください。
ページの真ん中あたりに【Sign Up Free】という青緑色のボタンが表示されます。そちらから無料版の登録が可能です。