1

これが私のコードです:

        $body = "Name:{$name}".PHP_EOL;
    $body .= "Phone:".$phone.PHP_EOL;
    $body .= "Email:".$email."\n\n";
    $body .= "Comments:".$comments."\n\n";
    $headers = 'From: MAILER <'.$emailTo.'>' . "\r\n" . 'Reply-To: '. $email."\r\n";
    $headers .= "Content-Type: text/html; charset=UTF-8"; 
    mail($emailTo, "New message", $body, $headers);

ご覧のとおり、\r\n\、\n\n、PHP_EOL などを使用しようとしましたが、それが機能する唯一の方法は、"content-type" ヘッダーを削除することです。誰もがなぜそれがそのようなものなのか考えていますか?!

4

2 に答える 2

3

<br> HTML メールを送信しているため、改行を設定するために使用する必要があります。それか<pre></pre>、\n を尊重するためにすべてをタグでラップします。出力に HTML が必要ない場合は、コンテンツを に設定するだけで、'text/plain'改行が表示されます。

マルチパートではないMIME-Version: 1.0ため、ヘッダーに追加してみてください。それはコンテンツタイプに役立つかもしれません。

$headers .= "MIME-Version: 1.0\r\nContent-Type: text/plain; charset=UTF-8";
于 2012-10-18T12:01:53.740 に答える
1

例で説明するように使用

$toemail=$emailid;
                $subject="You have registered successfully , please activate your account.";
                $msgbody.='<table width="100%" align="center" cellpadding="5" cellspacing="0" border="0">';
                $msgbody.='<tr><td>Admin Approved your profile and the details are : </td></tr>';
                $msgbody.='<tr><td>Username : '.$username.'</td></tr>';
                $msgbody.='<tr><td>Email : '.$emailid.'</td></tr>';
                $msgbody.='<tr><td>Password : '.$_SESSION['fan_user_password'].'</td></tr>';
                $msgbody.='<tr><td><a href="'.BASE_URL.'activate/fan/'.$lastid.'/'.$activation_code.'">';
                $msgbody.='Click here </a>to activate your account.</td></tr>';
                $msgbody.='</table>';
                mail($toemail,$subject,$msgbody,$from='');
于 2012-10-18T12:51:13.230 に答える