質問

mail()関数を使用してメッセージを送信する次のコードがあります。各行の終わりの改行が機能しないように見えることを除いて、すべてが正常に機能します。ご覧のとおり、私は<!> quotを使用しています。 \ r \ n <!> quot;これが改行を与えることを望んでいますが、改行を取得するために<br>を追加していませんが、誰かがHTMLメールクライアントを持っていない場合は使用しません。

<?php
  $to = 'user@example.com'; // Was a valid e-Mail address, see comment below
  $name = $_REQUEST['name'] ;
  $email = $_REQUEST['email'] ;
  $subject = $_REQUEST['subject'] ;
  $message = $_REQUEST['message'] ;

  $content = 'Name: '.$name."\r\n";
  $content .= 'Email: '.$email."\r\n";
  $content .= 'Subject: '.$subject."\r\n";
  $content .= 'Message: '.$message."\r\n";

  $headers  = 'MIME-Version: 1.0' ."\r\n";
  $headers .= 'Content-type: text/html; charset=iso-8859-1' ."\r\n";

  // Additional headers
  $headers .= 'To: iVEC Help <help@ivec.com>'. "\r\n";
  $headers .= 'From: '.$name.' <'.$email.'>' . "\r\n";

  mail( $to, $subject, $content, $headers);

?>

<p> You sent it ... good work buddy </p>
<p> <?php   '$name' ?> </p>
役に立ちましたか?

解決

HTMLとして送信しています-コンテンツタイプをtext/plainに変更すると、動作するはずです。

他のヒント

問題は、ヘッダーで、メールがHTMLメールであると言うことです:

$headers .= 'Content-type: text/html; charset=iso-8859-1' ."\r\n";

HTMLクライアントとテキストクライアントの両方との互換性を確保する場合は、マルチパートコンテンツタイプの使用を検討してください。これはさまざまな方法で実現できますが、簡単な方法の1つは、これを実行できるライブラリを使用することです。たとえば、 PEAR:Mail_Mime

を使用できます。

私はこの分野の専門家ではありませんが、コンテンツタイプをtext / htmlに設定していると思います。これは、htmlレンダリングを意味します(つまり、改行はスペースに変換されます)。 HTML要素(使用していないように見える)を使用していない場合は、コンテンツタイプをtext / plainに設定してみてください。

前述のように、text / plainに設定するか、改行にHTMLブレークを追加します。

$content = 'Name: '.$name."</br>\r\n";

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top