いつも大変お世話になっております。
今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;)
どうにか他の人のアドレスまで表示させないようにはできないでしょうか?
あと素朴な疑問なのですが、送信した際、不達となったメールデータはどこにいっているのでしょうか?
サーバーのどこかに格納、または送信者に返ってくる、もしくは不達のメッセージは自動でサーバーが削除しているのでしょうか?
サーバーはチカッパ!を利用しています。
何卒よろしくお願い申し上げます。
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 などになると思われます。
ですので、場合によってはご自分の手元には届かないと思われます。
No.1
- 回答日時:
十人程度であれば、Bccに入れる
数百、数千の場合はcronで1通づつ送ればいいだけです。
(ただし、サーバーにcronを仕込める権限がないと無理です)
不達のメールは 送信者に返ってきます
つまり、fromのメールサーバーに返ってきます。
早速回答ありがとうございました!
無事宛先に表示させなくすることができました。
一回に100件ずつで分けながら配信していきたいと思います。
でもこのときは全員「$to」の値になるのですね@@
できれば各メールアドレスをそれぞれのユーザーに表示させたかったですがとりわけ問題なさそうなのでこのまま作ってみたいと思います。
不達処理は返ってくるんですね!
となるとfromのアドレスも間違っていたら・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php 完了画面の送信メールのコードを書いているのですが・・・ 2 2023/06/02 12:01
- その他(メールソフト・メールサービス) サンダーバードでメールが受信されない 10 2022/03/24 17:00
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- Gmail mail. 1 2023/04/26 18:00
- Gmail SPFレコードとDNSサーバーについて、gmailを設定できるかどうか 2 2023/06/10 23:55
- その他(メールソフト・メールサービス) メールサーバーは「PC側がメールをDL済みか否か?」を何を以て感知するのか? 2 2022/12/20 14:56
- サーバー 接続・ログインはできているのにメールが送信できない 2 2022/06/27 15:03
- Visual Basic(VBA) エクセル VBA メール本文に指定セルに記載されているURLをリンクとして記載する方法 8 2022/08/08 07:50
- Yahoo!メール yahooメール使用できなくなった。 1 2022/07/05 11:45
- その他(メールソフト・メールサービス) メールが送信できない 発信側でできる対策 3 2023/05/11 10:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メールフォームのタイトルが文...
-
php 完了画面の送信メールのコ...
-
mb_send_mail関数が利用出来ない
-
PHPsendmailにて送信元を変更
-
mb_send_mailについて
-
VBA 添付ファイルをつけてメー...
-
mailやmb_send_mail関数で、本...
-
mb_send_mail() 第 4、5 引数の...
-
さくらサーバーにて、phpからメ...
-
サーバーによってはmb_send_mai...
-
index.phpに入るには、どうすれ...
-
onedrive にexcelファイルをア...
-
PHP postgreSQL(teraterm)を用...
-
フォントの色を変えるには?
-
【file_exists】ファイルが存在...
-
PHPで取得したHTML内のdiv要素...
-
.phpと.incファイルの違いはな...
-
3つ以上の論理積は利用可能なの...
-
VB.NET 最下位のディレクトリ名...
-
xamppでPHPのフォームからメー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
さくらサーバーにて、phpからメ...
-
php 完了画面の送信メールのコ...
-
メールフォームのタイトルが文...
-
PHPsendmailにて送信元を変更
-
PHPからメールを送る@さくらイ...
-
mailやmb_send_mail関数で、本...
-
mail関数を使った場合のReturn-...
-
mb_send_mail関数が利用出来ない
-
ワードプレス 予約システム
-
phpでのメール転送(添付ファイ...
-
VBA EXCELからメールを送...
-
複数行の文字列をメールのヘッ...
-
【初歩?】変数をセットできな...
-
Received-SPFでレンタルサーバ...
-
PHP CRONでメールの自動受信を...
-
PHPからのメールがこない
-
mb_send_mailでタイトルにハテ...
-
メールの本文が取得できない
-
PHPでトラックバック機能 HTTP...
-
POP Before SMTPでメールを送信...
おすすめ情報