おせわになっております。
表題の件で質問させてください。
テンプレート等をつかわずPHPの手打ちで問い合わせフォームを制作しております。
完成はしているのですが、
フォームからの連絡メールの本文が改行されず、
すべて一行に長々と記載されてしまい困っています。
解決策をご教示いただけますと助かります。
どうぞよろしくおねがいします。
##form.php##
<?php #送信先メールアドレス $mailto = "●●●@gmail.com"; #送信後画面からの戻り先 $toppage = "/"; #入力情報の受け取りと加工 $name = $_POST["name"]; $email = $_POST["email"]; $message = $_POST["message"]; #無効化 $name = htmlentities($name,ENT_QUOTES,"UTF-8"); $email = htmlentities($email,ENT_QUOTES,"UTF-8"); $message = htmlentities($message,ENT_QUOTES,"UTF-8"); #改行処理 $name = str_replace("\r\n", "", $name); $email = str_replace("\r\n","",$email); $message = str_replace("\r\n","\t",$message); $message = str_replace("\r","\t",$message); $message = str_replace("\n","\t",$message); #入力不備チェック if ($name == ""){ error("名前が未入力です:No name entered");} if (!preg_match("/\w+@\w+/",$email)){ error("メールアドレスが不正です:Invalid email address");} if ($message == ""){ error("メッセージが未入力です:message is missing");} #分岐チェック※要確認 if ($_POST["mode"] == "post"){conf_form();} else if ($_POST["mode"] == "send"){ send_form();} #確認画面 function conf_form(){ global $name; global $email; global $message; #テンプレート読み込み $conf = fopen("tmpl/confirm.tmpl","r") or die; $size = filesize("tmpl/confirm.tmpl"); $data = fread($conf,$size); fclose($conf); #文字置き換え $data = str_replace("!name!",$name, $data); $data = str_replace("!email!", $email, $data); $data = str_replace("!message!", $message, $data); echo $data; exit; } #エラー画面 function error($msg){ $error = fopen("tmpl/error.tmpl","r"); $size = filesize("tmpl/error.tmpl"); $data = fread($error, $size); fclose($error); #文字置き換え $data = str_replace("!errormessage!", $msg, $data); #表示 echo $data; exit; } #CSV書込 function send_form(){ global $name; global $email; global $comment; $user_input = array($name,$email,$comment); mb_convert_variables("SJIS","UTF-8",$user_input); $fh = fopen("user.csv","a"); flock($fh,LOCK_EX); fputcsv($fh, $user_input); flock($fh,LOCK_UN); fclose($fh); send_mail(); # テンプレート読み込み $conf = fopen("tmpl/send.tmpl","r") or die; $size = filesize("tmpl/send.tmpl"); $data = fread($conf , $size); fclose($conf); #文字置き換え global $toppage; $data = str_replace("!top!", $toppage, $data); #表示 echo $data; exit; } #メール送信 function send_mail(){ #時間とIPアドレスの取得 $date = date("Y/m/d H:i:s"); $ip =getenv("REMOTE_ADDR"); global $name; global $email; global $message; #本文 $body = <<< _FORM_ The following contact was made from the hirokoyamauchi portfolio site|ポートフォリオサイトから以下の連絡がありました date|日時: $date IP information|IP情報: $ip Your name|お名前: $name Your mail address|メールアドレス: $email Message|メッセージ: $message _FORM_; #管理者(4行目のメールアドレス)に送信 global $mailto; mb_language("japanese"); mb_internal_encoding("UTF-8"); $name_sendonly = "ポートフォリオメール"; $name_sendonly = mb_encode_mimeheader($name_sendonly); $mail_sendonly ="hirokoyamauchi@gmail.com"; $mailform = "From:".$name_sendonly."<".$mail_sendonly.">"; $subject = "ポートフォリオメールフォームから連絡がありました"; $result = mb_send_mail($mailto,$subject,$body,$mailform); #入力したユーザーに自動返信メールを送信 global $mail; mb_language("japanese"); mb_internal_encoding("UTF-8"); $name_sendonly = "from Hirokoyamauchi portfolio mailform"; $name_sendonly = mb_encode_mimeheader($name_sendonly); $mail_sendonly ="hirokoyamauchi@gmail.com"; $mailform = "From:".$name_sendonly."<".$mail_sendonly.">"; $subject = "Thank you for your inquiry|お問い合わせありがとうございました"; $result = mb_send_mail($email,$subject,$body,$mailform); }
自身で削除されてるようですが・・
#改行処理
$name = str_replace("\r\n", "", $name);
$email = str_replace("\r\n","",$email);
$message = str_replace("\r\n","\t",$message);
$message = str_replace("\r","\t",$message);
$message = str_replace("\n","\t",$message);
削除と言うか、改行コード→タブコードへの変換ですね。
回答ありがとうございます。
確認が遅くなりましてすいませんでした。
たしかに今の状態だとタブになります。
$message = str_replace("\r\n","\t",$message);
$message = str_replace("\r","\t",$message);
$message = str_replace("\n","\t",$message);
を
nameやemailのように
$message = str_replace("\r\n", "", $message);
とすれば良いのでしょうか?
ご教示いただけますと助かります。
結局どうしたのか分からないのですが、
str_replace("\r\n", "", $message)
だと改行コードを空文字に変換してます。
つまり、改行なくなります。
すいませんでした。
改行は入れたいです。
いまはタブになっているところは改行したく思います。
なるほど、最初のコメントだけで伝わると思って(確認だけで解決すると思って)
回答を控えていましたが、気づきを得るには至らなかったようですね。
機能を勘違いされているという前提で回答しましたので、ご確認を。

回答2件
あなたの回答
tips
プレビュー