• ベストアンサー

他の人にアドレスが見えないようにする送信方法は・・・?

いつも大変お世話になっております。 今SQLより抽出したアドレスに一括してメールを送信するプログラムを作っています。 最終的に送信のプログラムは、下記の通りです。 $to = $_POST['mail']; $subject = $_POST['subject']; $body = $_POST['message']; $from = "送信者"."<アドレス>"; mb_send_mail($to,$subject,$body,"From:".$from); しかしながら$_POST['mail'];は配列で格納しているためカンマ区切りのアドレスとなっています。 (aaa@yahoo.co.jp,bbb@yahoo.co.jp・・・) 実際テストしたところ宛先にすべてのアドレスが表示されてしまいました(x_x;) どうにか他の人のアドレスまで表示させないようにはできないでしょうか? あと素朴な疑問なのですが、送信した際、不達となったメールデータはどこにいっているのでしょうか? サーバーのどこかに格納、または送信者に返ってくる、もしくは不達のメッセージは自動でサーバーが削除しているのでしょうか? サーバーはチカッパ!を利用しています。 何卒よろしくお願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
  • x415f484f
  • ベストアンサー率71% (57/80)
回答No.2

> どうにか他の人のアドレスまで表示させないようにはできないでしょうか? ANo.1 の方が仰るように BCC として送信すればよろしいかと思います。 > $from = "送信者"."<アドレス>"; > mb_send_mail($to,$subject,$body,"From:".$from); 蛇足ですが、注意点として次のようにされたほうがよろしいかと思われます。 $bcc = $_POST['mail']; $subject = $_POST['subject']; $body = $_POST['message']; 「$from = "送信者"."<アドレス>";」とはしないで分離しておく $from_name = '送信者名'; $from_addr = 'user@example.domain'; 送信者やサブジェクトに日本語が含まれる場合は必ずエンコードしてください。 mb_language("ja"); $subject = mb_encode_mimeheader($subject, "ISO-2022-JP", "B"); $from = mb_encode_mimeheader($from_name, "ISO-2022-JP", "B"); $from .= ' <'.$from_addr.'>'; 無難なアドレスか、自分自身のアドレスにしておく。 $to = $form; ヘッダの追加など $headers = 'From: '.$from."\r\n"; $headers .= 'Sender: '.$from_addr."\r\n"; $headers .= 'Bcc: '.$bcc; 意図したアドレスにエラーメールが戻るようにパラメータを指定 $params = '-f '.$from_addr; 送信 if(! mb_send_mail($to, $subject, $body, $headers, $params)) { ここに送信に失敗した場合の処理を記述 } 詳しいことは「ZAPAnet総合情報局(http://zapanet.info/)」の PHP の説明ページのひとつである下記の URL が参考になると思います。 http://zapanet.info/phpdoc/function.mail.html 大量にメールを送る際の記述もあるようです。 > 不達となったメールデータはどこにいっているのでしょうか? > 送信者に返ってくる Return-Path: に指定されているアドレスにエラーメールが返ります。 ただし Return-Path: は送信に利用した MTA(メールサーバ)で付加されます。 sendmail が SMTP コマンドで MAIL FROM: に使ったアドレスとなりますが 前述した $params で -f でアドレスの指定すればそのアドレスになります。 -f が省略された場合は sendmail が実行されるサーバの設定によっては account_user@server_hostname というアドレスとなるのではないかと思われます。 # PHP は httpd のモジュールとなっていることが多いので # account_user が apache や httpd などになると思われます。 ですので、場合によってはご自分の手元には届かないと思われます。

その他の回答 (1)

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

十人程度であれば、Bccに入れる 数百、数千の場合はcronで1通づつ送ればいいだけです。 (ただし、サーバーにcronを仕込める権限がないと無理です) 不達のメールは 送信者に返ってきます つまり、fromのメールサーバーに返ってきます。

news_0203
質問者

お礼

早速回答ありがとうございました! 無事宛先に表示させなくすることができました。 一回に100件ずつで分けながら配信していきたいと思います。 でもこのときは全員「$to」の値になるのですね@@ できれば各メールアドレスをそれぞれのユーザーに表示させたかったですがとりわけ問題なさそうなのでこのまま作ってみたいと思います。 不達処理は返ってくるんですね! となるとfromのアドレスも間違っていたら・・・。

関連するQ&A