2

mail() 関数を使用してメッセージを送信する次のコードがあります。各行の最後の改行が機能していないように見えることを除いて、すべて正常に機能します。ご覧のとおり、「 \r\n 」を使用していますが、これにより改行が得られることを期待していますが<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>
4

4 に答える 4

7

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

于 2009-08-03T07:16:50.927 に答える
4

問題は、ヘッダーで、メールが HTML メールであると言っていることです。

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

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

于 2009-08-03T07:17:53.887 に答える
2

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

于 2009-08-03T07:17:17.913 に答える
0

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

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

于 2009-08-03T07:22:09.853 に答える