質問: functionとforeachでメール送信 こんにちは。前にも質問をさせて頂いたのですが・・・ htmlのメールフォームからpostでデータを受信してクライアントとユーザーの両方にメールを送るようなプロゴラムを記述しています。 データの受け取りからメールの送信のスクリプトを function message(){ foreach($_post as $key => $val){ print( $key .":" .$val. ""); }; }; $message= " テスト送信 "; $message.= message(); if(mail("クライアントのメールアドレス" , "テストメール", $message, $head)&& mail(message(34) , "テスト確認メール", $message, $head)){ print("・・・"); }else{ print("ご注文メール送信に失敗しました。\n"); print("再度ご注文フォームより注文して下さい。\n"); print("戻る"); }; としています。message(34)はユーザーのアドレスを取得しています。 しかし実行すると画面にpostで取ってるデータが2回表示され肝心のメールは クライアントには " テスト送信 と本文に表示されてユーザーにはメールが届きません。 質問が2つですみませんが、 1、functionで関数を作りforeachでデータを取得しメールで送信するというやり方は無謀なのでしょうか? もしできるのでしたらやり方を教えて頂けないでしょうか? 2、メールの本文にある"を消すにはどうしたらいいのでしょうか? かれこれ1週間近く悩んでいるのですが、一向にできそうにありません・・・。皆さんの知恵と知識をお借りできたらなと思います、どうかよろしくお願いします。 他に何かいる情報があれば教えて下さい。分かる範囲で補足していきます。
回答: return については参照urlを。 頭にダブルコーテーションがついてしまう問題については、送信前の文字列を出力してみてはどうでしょうか。 また、文字コードの問題が考えられます。 $message,$head は jis コードで送信しているでしょうか? mb が有効ならば、 $head = mb_convert_encodin($head, "jis"); $message = mb_convert_encoding($message, "jis"); によって変換すべきです。 i18n_convert という関数もあります。