Laravel 12 で Gmail API を使ってユーザー投稿登録通知を送るまでの流れ

今回は、Laravel 12 で作った「アーティストマップ(仮)」アプリに、登録時に管理者へ Gmail 通知を送る機能を追加しました。XAMPP 環境、Windows での手順です。 細かい部分は後に追記していきます。


1. Laravel プロジェクトの準備

composer create-project laravel/laravel soloartistmap <span class="hljs-string">"12.*"</span>
  • PHP 8.2 / Composer 2.8 で動作確認済み

  • Tailwind + Vite は設定済み(@vite(['resources/css/app.css', 'resources/js/app.js']) で読み込み)


2. アーティストモデルとマイグレーション

<code class="whitespace-pre! language-php"><span class="hljs-keyword">protected</span> <span class="hljs-variable">$fillable</span> = [ <span class="hljs-string">'name'</span>, <span class="hljs-string">'prefecture'</span>, <span class="hljs-string">'genre'</span>, <span class="hljs-string">'profile'</span>, <span class="hljs-string">'youtube_link'</span>, <span class="hljs-string">'soundcloud_link'</span>, <span class="hljs-string">'twitter_link'</span>, <span class="hljs-string">'is_approved'</span> ]; public function scopeApproved($query) { return $query->where('is_approved’, true); }
  • is_approved で承認済みかを管理

  • 都道府県・ジャンルも選択式にして柔軟性を確保


3. Gmail API を使う準備

① Google Cloud プロジェクト作成

  1. Google Cloud Console で新規プロジェクト作成

  2. Gmail API を有効化

② OAuth 同意画面設定

  • ユーザー種類:外部

  • テストユーザーに自分の Gmail を登録

  • データアクセスで gmail.send スコープを追加

③ OAuth クライアント作成

  • 「クライアント ID」と「クライアントシークレット」を取得

  • .env に追加:

GOOGLE_CLIENT_ID=取得したクライアントID GOOGLE_CLIENT_SECRET=取得したクライアントシークレット GOOGLE_REDIRECT_URI=http://127.0.0.1:8000/google/callback

4. Google API クライアントの導入

composer require google/apiclient:^2.18 composer dump-autoload -o
  • Windows では PowerShell の場合、Remove-Item -Recurse -Force vendorvendor/ を削除してやり直すと安定


5. GmailService クラス作成

app/Services/GmailService.php にサービスクラスを作成:

<span class="hljs-keyword">namespace</span> <span class="hljs-title class_">App</span>\<span class="hljs-title class_">Services</span>; use Google\Client; use Google\Service\Gmail; use Google\Service\Gmail\Message; class GmailService { public function getClient() { /* OAuth 設定 */ } public function sendMail($to, $subject, $body) { /* メール送信処理 */ } }
  • Laravel のサービスとして依存注入可能

  • 登録時に呼び出して通知可能


6. OAuth 認証

ブラウザで /google/auth にアクセス → Google アカウントでログインすると

認証完了!これで Gmail API で送信できます

と表示されます。✅


7. アーティスト登録通知の実装

ArtistController@storeGmailService を呼び出してメール送信:

<span class="hljs-variable">$gmailService</span>-><span class="hljs-title function_ invoke__">sendMail</span>( <span class="hljs-string">'管理者メール@gmail.com'</span>, <span class="hljs-string">'新しいアーティスト登録'</span>, <span class="hljs-string">"名前: <span class="hljs-subst">{$artist->name}</span></span>\n地域: <span class="hljs-subst">{$artist->prefecture}</span>" );
  • これで登録と同時に管理者に通知が届く


まとめ

  • Gmail API を使えば アプリから安全にメール送信 可能

  • OAuth + テストユーザー設定で Gmail アカウントを保護

  • Composer の autoload 最適化や Windows 環境の vendor/ 削除がポイント


💡 次のステップ:

  • 承認ボタンの管理画面と連携

  • 本番環境でも Gmail API 送信を確認

Laravel

Posted by bistro