サポート » プラグイン » contact form7で複数宛にBCCでメールを送りたいです。

  • 解決済 furuko51

    (@furuko51)


    contact form7パイプ機能で複数宛にBCCでメールを送りたい

    はじめて質問させていただきます。

    contact form7パイプ機能でチェックボックスで選んだ複数店舗宛にメールを送りたいのですが、メールは各メールアドレスに届くのですが、toにより選択送信された店舗のメールアドレスがそれぞれのメールに表示されてしまいます。

    パイプの記述は以下です。

    [checkbox shops 
    "ショップA|shop-a@shop-a.co.jp"
    "ショップB|shop-b@sample.jp"
    "ショップC|shop-c@test.com"
    "ショップD|shop-d@demo.net"]

    これをBCCにて送りたく、追加ヘッダーへ

    Bcc: [shops]

    を記述すると「Bcc 項目に不正なメールボックス構文が見られます。」とエラーが表示され、やはり複数店舗宛に送信されませんでした。

    何か解決策があればご教授いただきたいです。
    何卒よろしくお願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • @furuko51 さん、こんにちは。

    checkbox のタグがどのように展開されているかだと思います。
    例えば checkbox でひとつだけ選択されている場合でも BCC 送信されませんでしょうか。
    複数選択されている場合、[shops]タグがカンマ区切りで展開されないと正常な構文としてメール送信できないと思いますので、 maillog 等を確認して、どのように展開されてエラーになったのか見てみると良いかもしれません。

    展開の内容が確認できたらフックで展開方法を編集可能か調べてみる等が次の段階でしょうか。
    試していないので分かりませんが、 checkbox のメールアドレスの最後にカンマを入れてみたら動作したりして…?

    ご参考になれば。

    こんにちは

    Contact Form 7 のwpcf7_mail_componentsフィルターフックを使ってはどうでしょうか。
    このフィルターフックで渡される$componentsadditional_headersがあります。
    このadditional_headersにBCCを設定します。

    このadditional_headersの値は、最終的にwp_mailの第4引数に渡されます。

    wp_mail の bcc などの設定の仕方は上記ページの「$headers を使って “From:”, “Cc:”, “Bcc:” パラメータをセットする」にあります。
    ここでは、

    $headers は文字列にも配列にもできますが、配列形式の方がたぶん簡単でしょう。

    と書かれていますが、Contact Form 7 では文字列で処理しているようなので、文字列で追加する必要がありそうです。

    $components['recipient']に送信先が配列かコンマ区切りで入っているので、そこから取ってきて整形して$components['additional_headers']に BCC として追加してやります。

    またそのあと、上記フィルターフック内で送信先を示す$components['recipient']もなんとかしてやる必要があります。
    空にしても送信されるのかは分かりません。
    何かのメールアドレスを指定してもいいかもしれません。

    もちろん、フォームが複数ある場合には特定のフォームのときにのみ動作するようにする必要がありますが、上記フィルターフックの第二引数にWPCF7_ContactFormクラスのオブジェクトが渡されてきますので、そのidか何かで判定できるのではと思います。

    私はこのプログラムを書いたことが無いので、このとおりに動作するのかは分かりません。

    トピック投稿者 furuko51

    (@furuko51)

    @shokun0803様、@munyagu様とても丁寧なご回答いただきましてありがとうございました。

    ご回答いただきまして、再度確認と挙動を調べるために最初からフォームを作り直しました。
    ここで、私の質問の仕方に誤りがありました。

    実は[shops]をセレクトボックスでで分岐をさせる処理を行っており、

    セレクトボックスにて【洋服】を選択すると以下を表示し、

    [checkbox shops 
    "ショップA|shop-a@shop-a.co.jp"
    "ショップB|shop-b@sample.jp"
    "ショップC|shop-c@test.com"
    "ショップD|shop-d@demo.net"]

    セレクトボックスにて【和服】を選択すると以下を表示するというものです。

    [checkbox shops 
    "ショップE|shop-e@shop-a.co.jp"
    "ショップF|shop-f@sample.jp"
    "ショップG|shop-g@test.com"
    "ショップH|shop-h@demo.net"]

    これによってBCCがうまくいかなかったようで、分岐をなくし、ひとまず以下のようにすることでBCC送信することができました。

    [checkbox shops 
    "ショップA|shop-a@shop-a.co.jp"
    "ショップB|shop-b@sample.jp"
    "ショップC|shop-c@test.com"
    "ショップD|shop-d@demo.net"
    "ショップE|shop-e@shop-a.co.jp"
    "ショップF|shop-f@sample.jp"
    "ショップG|shop-g@test.com"
    "ショップH|shop-h@demo.net"]

    最初からこの分岐処理をしていることをお伝えすればよかったのですが、私が勝手にこのプラグインでは複数選択のチェックボックスでのBCC送信ができないものなんだと決めつけてしまったことを反省しております。

    @shokun0803様、@munyagu様にご回答いたきまして再度確認と挙動を調べるきっかけをいただいたことで、何とかBCCに関しては解決しましたことを心より感謝しております。本当にありがとうございました。

    引き続きここから再度分岐を行ったうえでBCCが送れるような仕様に変更していくなかで、お二方の貴重なご回答を参考にしながら進めていきたいと思います。

    私はほとんどプラグラムはかけないのですが、今回の件をきっかけにしっかり勉強していきたいと思います。

    重ねて@shokun0803様、@munyagu様にお礼申し上げます。
    ありがとうございました。

    失礼いたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「contact form7で複数宛にBCCでメールを送りたいです。」には新たに返信することはできません。