テキスト

『Serial Number for Contact Form 7』メールカウント増加の仕様について

3 min

とあるユーザー様からの不具合報告を頂き、調査してみると「フォーム送信ボタンを押すと無条件でメールカウントが加算される」という残念な実装になっていました。

フォーム入力で検証エラーが発生して、メール送信が行われていないのに、カウントだけ増えて連番が飛んでしまい欠番が生じてしまうようです。

不具合改修の際に「メールカウント増加の条件判定」で少し混乱することがあったので、カウント増加の仕様について記録を残しておきます。

動作状態とメールカウントの仕様表

コンタクトフォームの動作/設定モードにおける、各機能(メール送信/メッセージ保存/カウント増加)の挙動について表で示します。

動作状態メール送信メッセージ保存
(Flamingo)
メール
カウント増加
送信(成功)mail_sent
送信(失敗)mail_failed〇 or ✕
デモモードdemo_mode: on
スキップモードskip_mail: on
保存抑制モードdo_not_store: true

メールカウント増加の条件判定

メールカウントを増加させるかどうかの条件について、コンタクトフォームの動作/設定モード毎に解説します。

メールカウントを増加させるかどうか判断する、基本的な設計方針は「送信メッセージの実態データが存在するか」で判断しています。

言葉での説明が難しいですが、それぞれ解説していきます。

メール送信(成功)

メールカウントは、増加されます

一番基本となる動作です。メール送信が行われ、メッセージ保存も行われます。

【メール送信】〇 送信されます。(結果:成功)
【メッセージ保存】〇 保存されます。
【拡張プラグイン系】〇 本来通り動作します。

メール送信もメッセージ保存も行われ「送信メッセージの実態データ」は存在します。なのでメールカウントを増加する必要があります。

メール送信(失敗)

メールカウントは、増加されます。(※オプションで変更可能)

メール送信を行い、送信に失敗した場合の動作です。送信に失敗したメッセージも保存されます。

【メール送信】〇 送信されます。(結果:失敗)
【メッセージ保存】〇 保存されます。
【拡張プラグイン系】〇 本来通り動作します。

送信結果が異なるだけで、メール送信もメッセージ保存も行われ「送信メッセージの実態データ」は存在します。なのでメールカウントを増加する必要があります。

送信失敗時のメールカウントの扱いは最後まで迷って決めきれませんでした。そのため、オプションとして「増加する/しない」を選択できるようにしています。

デモモード/demo_mode

demo_mode: on をその他の設定に追加すると、そのコンタクトフォームはデモモードで動作するようになります。このモードでは、メール送信のプロセスがスキップされ、「送信完了しました」と応答メッセージが返るだけになります。

https://contactform7.com/ja/additional-settings

メールカウントは、増加されません

その名の通りデモとして動作します。メールの送信プロセスは行われず、送信結果も正常に完了したものとして扱われます。そのためメッセージ保存も行われません。

【メール送信】✕ 送信されません。
【メッセージ保存】✕ 保存されません。
【拡張プラグイン系】✕ デモ用に動作します。

見た目上の動作のみが行われるだけで「送信メッセージの実態データ」は存在しません。なのでメールカウントを増加する必要はありません。

スキップモード/skip_mail

skip_mail 設定は demo_mode とほとんど同様に機能しますが、skip_mail はメールの送信だけをスキップします。demo_mode とは異なり、skip_mail は Flamingo のメッセージ保存のような他の活動には影響しません。

https://contactform7.com/ja/additional-settings

メールカウントは、増加されます

デモモードと似ていますが、メールの送信プロセスのみが行われません。ただしメール送信以外は、本来通りの動作をするこが求められるモードになります。そのためメッセージ保存は行われます。

【メール送信】✕ 送信されません。
【メッセージ保存】〇 保存されます。
【拡張プラグイン系】〇 本来通り動作します。

実際のメール送信が行われないだけで「送信メッセージの実態データ」は存在します。なのでメールカウントを増加する必要があります。

保存抑制モード/do_not_store

この設定は Flamingo 等のメッセージ保存モジュールに対してこのコンタクトフォーム経由のメッセージを保存しないように指示します。

https://contactform7.com/ja/additional-settings

メールカウントは、増加されます

メッセージの保存が行わないように抑制されます。メッセージ保存以外は、本来通り動作することとなります。

【メール送信】〇 送信されます。
【メッセージ保存】✕ 保存されません。
【拡張プラグイン系】〇 本来通り動作します。

メッセージを保存しないだけで「送信メッセージの実態データ」は存在します。なのでメールカウントを増加する必要があります。

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です