Contact Form 7で送信先のメールを振り分ける方法
Wordpressのフォームプラグインcontact form 7で、問い合わせ内容によってメールの送信先を振り分ける方法をご紹介します。
お問い合わせの種別によって、送信するメールを変えたい場合があります。
例えば、ドロップダウンで問い合わせの選択によって、メールの送信先を変えるなどです。

Contact Form 7ではデフォルトでこの機能が備わっています。今回はデフォルト機能を使った方法、アクションを使ったメール送信先の変更方法をご紹介します。
Contact Form 7のデフォルト機能で送信先を振り分ける方法
セレクトのオプションに直接メールアドレスを記入するだけです。
セレクトのnameはyour-recipientとして、記入する場合はパイプを使います。

[select* your-recipient "お問い合わせ|inquiry@itti.jp""取材のご依頼|interview@itti.jp""お見積り|order@itti.jp"]
メールの配信先設定に[your-recipient]を記入すると、選択された宛先にメールが振り分けて送信されます。

お問い合わせや、取材のご依頼など、オプションのラベルをメールに表示させたい場合は[_raw_your-recipient]と記入すると、選択された値を表示させることができます。

アクションを使ってメールの送信先を振り分ける方法
アクションを使う利点として、プラグイン「Contact Form 7 Multi-Step Forms」を利用してもメールの振り分けが可能です。selectのnemeも任意のnameを付けることができます。
下記のコードをfunctions.phpに記載することで動作します。
サンプルではselectのnameを「contact_type」として、通常どおりのselectのタグを記入しました。

add_action('wpcf7_before_send_mail', 'change_recipient_based_on_dropdown_final', 10, 3);
function change_recipient_based_on_dropdown_final($contact_form, &$abort, $submission) {
$posted_data = $submission->get_posted_data();
if (!isset($posted_data['contact_type'])) {
return;
}
$contact_type_value = $posted_data['contact_type'];
if (is_array($contact_type_value)) {
$contact_type = $contact_type_value[0];
} else {
$contact_type = $contact_type_value;
}
$mail = $contact_form->prop('mail');
$recipient_email = '';
switch ($contact_type) {
case 'お問い合わせ':
$recipient_email = 'inquiry@gorge.jp';
break;
case '取材のご依頼':
$recipient_email = 'interview@itti.jp';
break;
case 'お見積り':
$recipient_email = 'order@itti.jp';
break;
}
if (!empty($recipient_email)) {
$mail['recipient'] = $recipient_email;
$contact_form->set_properties(['mail' => $mail]);
}
}
メールの配信先はデフォルトの状態でOKです。

フォームのテストをおこないメールが振り分けられている事を確認します。