• ベストアンサー

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

いつも大変お世話になっております。 今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;) どうにか他の人のアドレスまで表示させないようにはできないでしょうか? あと素朴な疑問なのですが、送信した際、不達となったメールデータはどこにいっているのでしょうか? サーバーのどこかに格納、または送信者に返ってくる、もしくは不達のメッセージは自動でサーバーが削除しているのでしょうか? サーバーはチカッパ!を利用しています。 何卒よろしくお願い申し上げます。

  • PHP
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • 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

  • メール送信で文字化け

    メール送信で件名が文字化けしてしまいます。 カテゴリ内には同様の質問もあるようですが、 解決できないので、投稿しました。 以下のようなコードです。 $to= "aa@aa.aa"; $from= "bb@bb.bb"; $subject= "メール送信テスト"; $headers= "From:$from"; $subject = i18n_mime_header_encode(i18n_convert($subject, "JIS")); $name= $_POST["name"]; $sub= $_POST["sub"]; $body= $_POST["body"]; $message="$name \n $sub \n $body \n"; if(mail($to, $subject, $message,$headers)){ echo "送信完了"; }else{ echo "送信エラー"; } ちなみに、 $subject= base64_encode($subject); とかもやってみたけど駄目でした。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • メール送信のPHPの件で

    現在、 <?php //HTML内容出力 echo "<html>"; echo "<head>"; echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"; echo "<title>メールフォーム(送信処理)</title>"; echo "</head>"; echo "<body>"; //文字コード設定 mb_language("ja"); mb_internal_encoding("utf-8"); //*環境設定************************************* //件名 $subject = "お問い合わせがありました"; //管理人メールアドレス(宛先) $to = "○○@gmail.com"; //********************************************** //**POSTデータ受け取り************************** //差出人メールアドレス格納 $header = "From: ". $_POST['email']; //本文格納 $body = "■お名前:" . $_POST['name'] ."\n"; $body .= "■内容:" . $_POST['message'] ."\n"; //************************************************ if(mb_send_mail($to,$subject,$body,$header)){ echo "メール送信しました。"; }else{ echo "メール送信失敗しました。"; } //HTML内容出力 echo "</body>"; echo "</html>"; ?> こういう感じでメール送信フォームのPHPを正常稼働させているのですが、 これに送信者への確認メールを送信するには、どのように追記すればよろしいでしょうか? よろしくご教授の方、お願いいたします。

    • 締切済み
    • PHP
  • PHPのメール送信でエラーが発生します。

    PHPでメール送信プログラムを組んだのですが、 エラーが発生してメールが送信できません。 いろいろ試したのですが、解決方法が見いだせなかったため、 書き込みをいたしました。 以前、XPで開発をしていたときは、メール送信ができたと思ったのですが。。 環境は以下の通りです。 WindowsVista PHP5.2.5 Apache2.2.6 melon1.62 実行したプログラムは以下の通りです。 $to = "abc@yahoo.co.jp"; $from = "abc@yahoo.co.jp"; $subject = "タイトル"; $message = "メッセージ"; $header = "From: $from"; mb_send_mail($to, $subject, $message, $header); abc@yahoo.co.jpは、実際には自分のヤフーアドレスで入力しました。 エラーは、melonのコンソールに、 421 temporary sender lookup fail と表示されます。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • phpのメール送信

    ホームページにメールフォームを作りたいのですが、 送信できなくて困っています。 ソースは次の通りです。 <?php echo "<html>"; echo "<head>"; echo "<title>メールフォーム(送信処理)</title>"; echo "</head>"; echo "<body>"; mb_language("japanese"); mb_internal_encoding("UTF-8"); $to = "アドレスA"; $subject = "件名"; $from = "アドレスB"; $header = "From: ". $from; //本文格納 $mailbody = "■お名前:" . $_post["name"] ."\n"; $mailbody .= "■内容:" . $_post["sentaku"] ."\n"; if(mb_send_mail($to, $subject, $mailbody, $header)){ echo "送信しました。"; }else{ echo "送信できませんでした。"; } echo "</body>"; echo "</html>"; ?> またif文の日本語が文字化けしてしまいます。 メール送信できて、文字化けもないようにしたいです。 よろしくお願いします。

    • 締切済み
    • PHP
  • 送信先のメールアドレスが存在しない場合・・

    こんな感じでメール送信処理を組んでいます↓ $subject = jcode( $subject, 'euc' )->jis; $body = jcode( $body, 'euc' )->jis; $_ml->mail( '000000@xxx.co.jp' ); $_ml->to( '送信先アドレス' ); $_ml->data(); $_ml->datasend( "From: ".'000000@xxx.co.jp'. "\n" ); $_ml->datasend( "To: ". '送信先アドレス' ."\n" ); $_ml->datasend( "Subject: $subject\n" ); $_ml->datasend( "\n" ); $_ml->datasend( $body ); $_ml->datasend(); $_ml->quit(); 上記のコードに 送信したメールアドレスが存在しない場合、ログに書き込みを行い、 エラーメールを受信しないようにするコードを加えたいのですが、 送信したメールアドレスが存在しないと判断する処理と エラーメールを受信しないようにするという処理をどのように すればよいのか分かりません。 どなたかお分かりになる方いらっしゃらないでしょうか・・

    • ベストアンサー
    • Perl
  • PHPでメールを送信するには

    PHP超初心者です。 参考本をもとにPHPでメールを送信するということにチャレンジしているのですが、次のような文章が出ます。 Warning: mb_send_mail() [function.mb-send-mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\Program Files\Apache Group\Apache2\htdocs\php10\mail.php on line 11 エラー:送信に失敗しました 参考本に書いてあるとおり、 php.iniのSMTP=localhost を自分が使っているoooooo@ocn.ne.jpに書き換え、sendmailには自分の別アドレスを記述したのですが。 11行目のエラーも何を指しているのかわかりません。 ご回答よろしくお願いします。 【mail.php】 <html> <head><title>mail.php</title></head> <body> <?php $address=$_POST['address']; $subject=$_POST['subject']; $message=$_POST['message']; $header="Content-Type:text/plain;charset=iso-2022-jp"; mb_language("Japanese"); if(mb_send_mail($address, $subject, mb_convert_encoding($message,"JIS","EUC-JP"),$header)){ print("送信完了しました。"); }else{ print("エラー:送信に失敗しました"); } ?> </body> </html> 【mail_form.html】 <html> <head><title>メールの送信</title></head> <body> <h2>メールの送信</h2> <form action="mail.php" method="post"> 宛先:<input type="text" name="address"><br /> 件名:<input type="text" name="subject"><br /> 本文:<br /><textarea name="message" rows="5" cols="30"></textarea><br /> <input type="submit" value="送信"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • phpのメール送信での質問になります

    メールとお問い合わせ内容は届くのですが、名前とアドレスが届かないので間違っている箇所を教えていただけるとありがたいです。 以下コードになります。 html <body> <main> <section> <h2>お問合せ内容の確認</h2> <form action="mailto.php" method="post"> <div class="contant-area"> <div class="label-container"> <label class="item intem-name">名前</label> <label class="item item-email">メールアドレス</label> <label class="item item-message">問い合わせ内容</label> </div> <div class="text"> <p class="item-post" name="name"><?php echo $_POST["name"]; ?></p> <p class="item-post" name="email"><?php echo $_POST["email"]; ?></p> <textarea class="item-post item-textarea" name="message"><?php echo $_POST["message"]; ?></textarea> </div> </div> <div class="button-area"> <input type="submit" value="送信"> </div> </form> </section> </main> </body> php <?php // フォームデータの取得 $name = $_POST[&#039;name&#039;]; $email = $_POST[&#039;email&#039;]; $message = $_POST[&#039;message&#039;]; // 送信先のメールアドレス $to = &#039;*****@gmail.com&#039;; // 件名 $subject = &#039;お問い合わせがありました&#039;; // メール本文 $body = "名前: $name\n"; $body .= "メールアドレス: $email\n"; $body .= "問い合わせ内容:\n$message"; // 送信元のメールアドレスと名前 $from = &#039;*****1690.xsrv.jp&#039;; $fromName = &#039;お問い合わせフォーム&#039;; // ヘッダー $headers = "From: $fromName <$from>"; // メール送信 $mailResult = mail($to, $subject, $body, $headers); ?>

    • ベストアンサー
    • PHP
  • メール送信について

    こんばんは。PHPでmb_send_mailを使ってメールを送信したいのですが、「Warning: mb_send_mail() [function.mb-send-mail]: SMTP server response: 521 mail not accepted from this domain in C:\Program Files\Apache Group\Apache2\htdocs\samples\chap2\sendmail.php on line 5メール送信に失敗しました。」とエラーが出てしまい上手くできません。 ■PHPスクリプト 1:<?php 2:$to='○○○○○@yahoo.co.jp'; 3:$subject='テストメール'; 4:$body='ようこそ!'; 5:if(mb_send_mail($to,$subject,$body)){ 6: print('メール送信に成功しました。'); 7:} 8:else{ 9: print('メール送信に失敗しました。'); 10:} 11:?> PHP.iniファイルはSMTP=smtp.mail.yahoo.co.jp、sendmail_from=CQW15204nifty.comと設定しております。 参考書通りにやっているのですが、メーラーに送られません。この状態で他に考えられる原因とかありますか?わかる方ぜひ教えてください。

    • 締切済み
    • PHP
  • メール送信者の日本語指定について

    メール送信関数を作成いたしました。 しかし、メールの送信者を日本語で表示しようとすると、送信エラーになります。 下記がコードになりますが、お気づきの点がありましたら、ご教示をお願いします。 また、「全日空信用カードサービスセンター」を取っ払って、英語のみの表記でしたら、正常に送信できます。※エンコードはSJISです。 //mail $mail_to = "**@yahoo.com"; $mail_from = "***@yahoo.com"; $subject_register = "お問い合わせ"; $title = "ANA CARD 全日空信用カードサービスセンター "; $header_listing = "From:".$title; $headers1 = $header_listing."<".$mail_from.">"; $subject = "=?iso-2022-jp?B?".base64_encode($subject_register)."?="; ・・・・・・・・・ 省略 if (mail($mail_to,$subject,$body,$headers1)) { message("ありがとうございました。"); } else { message("送信エラー"); }

    • ベストアンサー
    • PHP
  • mb_sendmailで送信できない

    環境はphp5+fedora5+postfixの自宅サーバです。 以下のようにphp5からmb_send_mailしたところ、 sendmailは出来ているようなのですが(status=sent (250 ok dirdel))、 相手先にメールが届かず困っています。 (受信箱にも迷惑メールフォルダにも入ってない模様) 宛先を自ドメインにするとメールも届きます。 メール送信が成功したのに、相手にメールが届かない理由として どのような要因が考えられるでしょうか? よろしくお願いします。 PHP---------------------------------------------------------- mb_language("Ja") ; mb_internal_encoding("EUC-JP") ; $to="○○○○○@yahoo.co.jp"; $subject="タイトル"; $body="本文"; $from = "○○○○○@yahoo.co.jp"; $header="From: " .$from."\r\nContent-Type: text/plain;"; $result = mb_send_mail($to,$subject,$body,$header); if($result == TRUE){ echo "メール送信OK"; } else { echo "メール送信ERR"; } postfixログ---------------------------------------------------------- 自宅サーバからyahooのアドレスに送ったログ [50] : Oct 8 15:13:01 自宅サーバ postfix/smtp[11989]: 7D5E01658035: to=, relay=mx2.mail.yahoo.co.jp[203.141.44.127], delay=0, status=sent (250 ok dirdel) [49] : Oct 8 15:13:01 自宅サーバ postfix/qmgr[2093]: 7D5E01658035: from=, size=466, nrcpt=1 (queue active) [48] : Oct 8 15:13:01 自宅サーバ postfix/cleanup[11987]: 7D5E01658035: message-id=<20061008061301.7D5E01658035@自宅サーバ.org> [47] : Oct 8 15:13:01 自宅サーバ postfix/pickup[11744]: 7D5E01658035: uid=48 from= [46] : Oct 8 15:12:52 自宅サーバ postfix/qmgr[2093]: 64D671658035: removed

    • ベストアンサー
    • PHP