-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Mail APIFeatureFeature
Description
概要
SendGrid のAPIには以下のような送信制限があるため、save_post フックで即座に全件送信する方式では制限に引っかかる可能性がある。
- 最大レート: 1秒あたり100リクエスト
- バッチ数制限: 1リクエスト最大1000件
これに対応するため、以下のような機能を hamail に追加したい。
実装方針
✅ 1. 投稿公開後に送信予約する
save_post時点で即送信せず、wp_schedule_single_event()を使って 5分後 に送信処理を予約する。- これにより複数の同時投稿時などでもタイミングをずらして送信できる。
wp_schedule_single_event(time() + 300, 'hamail_send_scheduled_post', [$post_id]);✅ 2. 送信をスロット単位で制御する
-
送信対象ユーザーが多い場合は、以下のような単位でスロット分割:
- 1スロットあたり最大 900件(安全マージン)
- スロットごとに1秒以上の遅延を入れてスロット制御(例:
sleep(1)またはwp_schedule_single_event())
✅ 3. 各スロットの送信状況をコメントとして記録する
-
送信ログを 投稿に紐づくコメント(
wp_insert_comment) として記録する。 -
コメントには以下のような情報を含める:
- スロット番号(例: Slot 1/5)
- 対象件数
- 実行時刻
- 成功件数/失敗件数
想定される構成(案)
Hamail_Schedulerクラスを新設して送信予約を担当- 実送信は既存の
Hamail_Senderを活用しつつ、スロット分割とログ記録処理を追加 hamail_send_scheduled_postフックで送信予約後のトリガーを柔軟に処理
影響範囲
| 項目 | 影響 |
|---|---|
| 投稿直後の即時送信 | 停止(予約送信に切り替え) |
| 高速バルク送信 | スロット分割により安全に対応可能 |
| ログの可視化 | 投稿コメントとして記録されることで可視化される |
備考
- より高度な管理(再送・キャンセル・進捗表示など)を行う場合、将来的に CPTベースのメールキュー構造の導入も検討できる。
- 現時点では WordPress の
wp_schedule_single_event()とコメントAPIを活用することで、追加ライブラリなしで実装可能。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Mail APIFeatureFeature