アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつも大変お世話になっております。

今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;)
どうにか他の人のアドレスまで表示させないようにはできないでしょうか?

あと素朴な疑問なのですが、送信した際、不達となったメールデータはどこにいっているのでしょうか?
サーバーのどこかに格納、または送信者に返ってくる、もしくは不達のメッセージは自動でサーバーが削除しているのでしょうか?

サーバーはチカッパ!を利用しています。
何卒よろしくお願い申し上げます。

A 回答 (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 などになると思われます。

ですので、場合によってはご自分の手元には届かないと思われます。
    • good
    • 0

十人程度であれば、Bccに入れる


数百、数千の場合はcronで1通づつ送ればいいだけです。
(ただし、サーバーにcronを仕込める権限がないと無理です)

不達のメールは 送信者に返ってきます
つまり、fromのメールサーバーに返ってきます。
    • good
    • 0
この回答へのお礼

早速回答ありがとうございました!
無事宛先に表示させなくすることができました。

一回に100件ずつで分けながら配信していきたいと思います。
でもこのときは全員「$to」の値になるのですね@@
できれば各メールアドレスをそれぞれのユーザーに表示させたかったですがとりわけ問題なさそうなのでこのまま作ってみたいと思います。

不達処理は返ってくるんですね!
となるとfromのアドレスも間違っていたら・・・。

お礼日時:2008/03/23 23:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!