スケジューラー・キュー

🌐 言語: 🇻🇳 Tiếng Việt · 🇬🇧 English · 🇯🇵 日本語(現在)

GP247 のメール送信システム

はじめに

このドキュメントでは、GP247 がどのようにメールを送信するか(注文確認メール、アカウント認証、パスワード再設定など)を、フロー図でイメージしやすく説明します。サイト運営者と導入担当者向けで、技術に詳しくない方も対象です。読み終えると、メールがどの段階を通るか、オン/オフのスイッチがどこにあるか、GP247 がいつあなたの SMTP を使い、いつ既定のメーラーを使うか、そして正しい設定方法がわかります。キュー+cron でメールを送る方法は、別のドキュメント スケジュールとキュー(Schedule & Queue) で説明しています。

1枚の図で見る全体像

これは GP247 でのメール1通の道のりの全体です。この図を見れば全体像がつかめます。

flowchart TD
    A["メール送信が必要なイベント<br/>(注文、認証、パスワード再設定など)"] --> B{"メール送信はオン?<br/>email_action_mode"}
    B -->|オフ| X["⛔ 何も送信しない"]
    B -->|オン| C{"キュー経由で送信?<br/>email_action_queue"}
    C -->|いいえ → 直接送信| D["リクエスト内ですぐに送信 (sync)"]
    C -->|はい → キュー| Q["ジョブをキューに入れる<br/>(queue:work による処理が必要)"]
    Q --> W["queue:work がジョブを取り出して送信"]
    D --> E{"宛先が空?"}
    W --> E
    E -->|空| S["⚠ スキップ + ログ記録"]
    E -->|あり| F["SMTP / メーラーで送信"]
    F -->|成功| OK["✅ 送信済み"]
    F -->|直接送信でエラー| L1["ログファイルに記録<br/>決済は止めない"]
    F -->|キュー経由でエラー| L2["failed_jobs に入る → 再試行"]

図の読み方: メールが先に進むのは、メール送信がオンのときだけです。その後の道は2つあります。直接送信(顧客がボタンを押したその場で送る)か、キュー経由(後で送るので顧客を待たせない)です。送信前に、GP247 は宛先が空かどうかを確認します。送信に失敗した場合、「直接送信」ではログに記録しますが、注文は壊しません。「キュー」ではエラーの一覧に入れて再試行します。

3つの主なスイッチ

すべて 管理画面 →「サイト設定」→「メール & SMTP」 で設定し、ストアごとに保存されます。

スイッチ 意味 目安
email_action_mode メール送信機能全体のオン/オフ メールを送るにはオンにする必要があります
email_action_queue キュー経由(後で送る)か、直接送信(すぐに送る)か 小規模サイトは直接、メールが多いサイトはキュー(スケジュールとキューのドキュメントを参照)
smtp_mode(「SMTPを使用」) 管理画面で入力した SMTP を使うか、.env の既定のメーラーを使うか 独自の SMTP サーバー(Gmail、SendGrid など)を入力したい場合はオンにします

GP247 はどの「送信チャネル」を選ぶか?

GP247 は送信のたびに、管理画面で入力した SMTP を使うか、.env ファイルの既定のメーラーを使うかを自動で決めます。図にすると次のとおりです。

flowchart TD
    A["リクエストごとに GP247 が送信チャネルを選ぶ"] --> B{"子ストア (マルチストア)<br/>で smtp_host を入力済み?"}
    B -->|はい| S1["子ストアの SMTP を使う"]
    B -->|いいえ| C{"ルートストアで<br/>SMTPを使用 (smtp_mode) がオン?"}
    C -->|はい| S2["管理画面で入力した SMTP を使う"]
    C -->|いいえ| S3[".env の既定のメーラー (MAIL_*) を使う"]

⚠️ ストアが1つのサイトでよくある落とし穴: 「SMTPを使用」をオンにしておらず、.env に MAIL_MAILER=smtp も設定していない場合、GP247 は Laravel の既定のメーラー log を使います。つまり、メールはログファイルに書き込まれるだけで、実際には送信されません。実際に送信するには、「SMTPを使用」をオンにしてサーバーを入力するか、.env で MAIL_* を設定してください。

SMTP の設定(「SMTPを使用」をオンにしたとき)

「メール & SMTP」画面で次の欄を入力します。

入力欄 意味
smtp_host SMTP サーバー(例: smtp.gmail.com)
smtp_user / smtp_password SMTP のログインアカウント(パスワードは ●●● で隠され、at-rest 暗号化されます。下の「暗号化して保存される機密情報」を参照)
smtp_security セキュリティの種類: ssl / tls / 空欄
smtp_port ポート。空欄にすると、GP247 が下の表に従って自動で選びます
smtp_name / smtp_from 送信者の名前とアドレス(空欄 → ストアの名前とメールアドレスを使用)

セキュリティ → ポートの対応表(GP247 が標準に従って自動で適用します):

smtp_security 接続の種類 既定のポート
ssl 最初から暗号化(implicit TLS) 465
tls 暗号化に切り替え(STARTTLS) 587
空欄 暗号化なし/自動ネゴシエーション 587

暗号化して保存される機密情報

SMTP パスワード、そして OAuth クライアントシークレット、captcha のシークレット、プラグインのライセンスなどの その他の機密情報は、専用鍵 GP247_ENCRYPTION_KEY を使ってデータベース内で暗号化されます (enc:v2:… の形式で保存され、平文で保存されることはありません)。この鍵をバックアップしてください。 そして 鍵の変更は必ず php artisan gp247:encryption-key-rotate コマンドで行ってください(手で書き換えないでください)。 安全に鍵を変更する手順を含む詳しい説明は、機密データの暗号化 を参照してください。

環境に応じた送信方法の選び方

  • シンプルな共有ホスティング(cron なし): 直接送信(キューをオフ)にします。追加でインストールするものはありません。
  • メールが多い/顧客を待たせたくない: キューをオンにします。その場合は「キューを処理する」仕組みが必要です。詳しくは スケジュールとキュー を参照してください。

設定画面のお知らせパネル

「メール & SMTP」画面の上部に、GP247 は設定に応じて自動で変わるお知らせパネルを表示します。状態は4つあります。

状態 意味 必要な作業
direct 直接送信中 cron/ワーカーは不要です
queue_sync キューはオンだが QUEUE_CONNECTION=sync すぐに送信されます。バックグラウンドで処理したい場合は database に変更し、cron を追加します
queue_auto キュー+GP247 がスケジュールを自動管理 cron を1行追加するだけです(パネルにコピー用の行が表示されます)
queue_manual キュー+自分でワーカーを実行 supervisor で queue:work を実行します

メールの送信に失敗したら?

  • 直接送信: エラーはログファイルに記録されます(storage/logs/gp247.log)が、顧客の注文・登録は壊れません。
  • キュー経由: エラーになったジョブは、自動で再試行するために failed_jobs テーブルに入ります。状況を確認でき、「見かけだけの成功」にはなりません。

よくある質問(Q&A)

Q1: メール送信をオンにしたのに、顧客にメールが届きません。なぜですか?

→ 3点を確認してください。(1) email_action_mode をオンにしたか。(2)「SMTPを使用」をオンにしていない場合、.env に MAIL_MAILER=smtp があるか(ないとメールはログに書かれるだけです)。(3) キューをオンにしている場合、キューを処理する仕組みがあるか(スケジュールとキューのドキュメントを参照)。あわせて storage/logs/gp247.log も確認してください。

Q2: ssl と tls のどちらを選ぶべきですか?

→ プロバイダーによります。一般的には、Gmail/SMTP は ssl でポート 465、または tls でポート 587 を使います。ポートは空欄のままで大丈夫です。GP247 がセキュリティの表に従って正しく入力します。

Q3: メールがログに書かれるだけで、送信されないのはなぜですか?

→ Laravel の既定のメーラーが log だからです。「SMTPを使用」をオンにしてサーバーを入力するか、.env に MAIL_MAILER=smtp と MAIL_* を設定してください。

Q4: 「キュー」(queue)はオンにすべきですか?

→ メールが少ないサイトでは不要です(直接送信のほうがシンプルです)。メールが多いサイトや SMTP が遅い場合は、顧客を待たせないためにオンにすることをおすすめします。ただし、cron/ワーカーの設定が必要です(スケジュールとキューのドキュメントを参照)。

Q5: SMTP パスワードは管理画面で見えてしまいますか?

→ 平文では表示されません。パスワード欄は ●●● で隠され、データベース内では at-rest 暗号化されています(enc:v2:…)。バックアップや鍵の変更については 機密データの暗号化 を参照してください。

Q6: 複数ストア(マルチストア)のサイトでは、どこから送信されますか?

→ 各子ストアが独自の SMTP を入力します。smtp_host を入力していないストアは、自動で .env の既定のメーラーを使います。

Q7: 顧客向けと管理者向けのメールは何が違いますか?

→ 注文の概要という内容は同じで、宛先が違います。管理者はストアのメールアドレスで受け取り、顧客は自分のメールアドレスで受け取ります(replyTo はストアのメールアドレスになります)。対応するフラグ(order_success_to_admin / order_success_to_customer)がオンのときだけ送信されます。

Q8: 以前は ssl に設定していました。更新すると影響がありますか?

→ 影響する可能性があります。新しいバージョンでは、ssl に対して実際に暗号化接続 smtps を使います(以前は正しく暗号化されていなかった可能性があります)。更新後はテストメールを1通送って、SMTP に引き続き接続できることを確認してください。

Q9: メールの送信に失敗したことは、どうすればわかりますか?

→ storage/logs/gp247.log を確認してください(送信エラーはすべてここに記録されます)。キューを使っている場合は、failed_jobs テーブルも確認してください。

Q10: SMTP のパスワードやホスト名を変更した後、何かを再起動する必要がありますか?

→ いいえ。設定はリクエストごとに読み込まれるため、すぐに反映されます。ただしキューを使っている場合、すでにキューに入っているジョブは、処理される時点の情報で実行されます。


📅 最終更新: 2026-10-22 · ✍️ 作成者 (Author): GP247