- ベストアンサー
PHPでメールフォーム作成:差出人のアドレスを任意に指定する方法
- PHPを使って作成したメールフォームで、差出人のアドレスを任意のものにする方法を紹介します。
- 初心者でも簡単に実装できる方法を解説します。
- 差出人のアドレスを変更することで、送信元を自由に設定することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
mail($email1, $subject2, $message, $headers2, $mailfr); これがフォームを利用して送ってくれた人へのメールであれば、 mail($to, $subject, $message, $headers, $mailfr); を mail($to, $subject, $message, $headers, "From:".$email1); に変更することでいけると思います
その他の回答 (1)
- nikuq
- ベストアンサー率22% (8/36)
まず、メール送信時の文字コードは『ISO-2022-JP』ではなく、『ISO-2022-JP』です。 そして、文字コードの設定はメールヘッダ内で設定します。 このメールヘッダ内でメール送信者のメルアド(from)の設定も出来ます。 私は下記のフォーマットをヘッダで使っています。 $header = ""; $header .= "Content-Type: text/plain; charset=ISO-2022-JP\n"; $header .= "Content-Transfer-Encoding: 7bit\n"; $header .= "from: ${user_mail}"; このヘッダをそのままコピペで使っても大丈夫ですが、最後のfromは環境に合わせて変えてください。 そして、メール送信の関数『mail』ですが、これも2バイト文字のメールを送信するなら、 『mb_send_mail』を使って下さい。でも、この関数はサーバの設定によっては使えない可能性もありますが・・・(-_-;) 送信フォームで使用しているフォーマットは下記の通りです。 //管理者用のメール設定 //ヘッダの設定 $hoge_header = ""; $hoge_header .= "Content-Type: text/plain; charset=ISO-2022-JP\n"; $hoge_header .= "Content-Transfer-Encoding: 7bit\n"; $hoge_header .= "from: ${user_mail}"; //送信先メアドの設定 $hoge_mail = "${hoge_mail}"; //メールタイトルの設定 $hoge_subject = "\nこのメールはフォーム管理者に向けて送信しています"; //メール本文の設定 $hoge_body = "これはフォーム管理者に向けて送信しています。\n"; $hoge_body .= "まちがっても利用者に送らないようにしましょう"; //利用者用のメール設定 //ヘッダの設定 $user_header = ""; $user_header .= "Content-Type: text/plain; charset=ISO-2022-JP\n"; $user_header .= "Content-Transfer-Encoding: 7bit\n"; $user_header .= "from: ${hoge_mail}"; //送信先メアドの設定 $user_mail = "${user_mail}"; //メールタイトルの設定 $user_subject = "\nこのメールは利用者に向けて送信しています"; //メール本文の設定 $user_body = "これは利用者に向けて送信しています。\n"; $user_body .= "ユーザに洩れたらまずい情報は\n"; $user_body .= "送信しないように気をつけましょう"; //メール言語の選択 mb_language("Japanese"); //管理者用メールの送信設定 mb_send_mail("${hoge_mail}","${hoge_subject}","${hoge_body}","${hoge_header}"); //クライアント用メールの送信設定 mb_send_mail("${user_mail}","${user_subject}","${user_body}","${user_header}"); ・・・と、この様に設定して送っています。 ご参考になれば幸いです。。。 参考URLはPHPのマニュアルにあるmb_send_mailの項目です。
お礼
$header .= "from: ${user_mail}"; の命令を勘違いしていたようで、指示ミスで表示されませんでした。 見直した結果、しっかり思うとおりの表示が出来ました! ありがとうございました。 これを機会に、もっと勉強したいと思います。
補足
> まず、メール送信時の文字コードは『ISO-2022-JP』ではなく、『ISO-2022-JP』です。 『ISO-2022-JP』と『ISO-2022-JP』は違うのでしょうか??? どういう意味かちょっと分からず、申し訳ないです。 上記のことを踏まえてやってみましたが、何かが違うようで… もう一度見直します。 参考URLの内容もしっかり確認したいと思います。
お礼
"From:".$email1 ここの命令を間違えて認識してました。 こういうやり方もあるんだ!と、とても勉強になりました。 ありがとうございました。
補足
何かが間違っているかもしれないので、再度チャレンジします。