そうですか:
Content-typetext/html; charset=iso-8859-1
私が見るべき場所:
Content-type: text/html; charset=iso-8859-1
それは切り貼りエラーですか?コードで、または結果で?
HTML のみのメールは (SpamAssassin、SpamBouncer などを使用して) スパム スコアが高くなることが多いため、マルチパート メッセージに text/plain と text/html の両方のタイプを含めたい場合があることに注意してください。
更新#1:
は\r\n
、1 つではなく 2 つの改行として解釈されているようです。異なるプラットフォームでは、SMTP の実装に異なるバグがある可能性があります。行末を just に変更することで回避できる可能性があります\n
。それがあなたのシステムで動作する場合、別のシステムでは動作しない可能性があるため、それに依存しないでください。
また、別のメール送信方法への切り替えも検討してください。 PHP の内部関数よりも、 phpMailerとSwiftMailerの両方をお勧めします。mail()
更新#2:
Incognito の提案に基づいて、ヘッダーをより適切に整理し、プレーンテキスト部分を作成するために使用できるコードを次に示します。
filter_var($to, FILTER_VALIDATE_EMAIL) or die("Invalid To address");
filter_var($email, FILTER_VALIDATE_EMAIL) or die("Invalid From address");
$subject = 'HTML e-mail test';
$messagetext = 'TEST in TEXT';
$messagehtml = '<html>
<body>
<h1>TEST</h1>
<p>in HTML</p>
</body>
</html>';
// We don't need real randomness here, it's just a MIME boundary.
$boundary="_boundary_" . str_shuffle(md5(time()));
// An array of headers. Note that it's up to YOU to insure they are correct.
// Personally, I don't care whether they're a string or an imploded array,
// as long as you do input validation.
$headers=array(
'From: <' . $email . '>',
'MIME-Version: 1.0',
'Content-type: multipart/alternative; boundary="' . $boundary . '"',
);
// Each MIME section fits in $sectionfmt.
$sectionfmt = "--" . $boundary . "\r\n"
. "Content-type: text/%s; charset=iso-8859-1\r\n"
. "Content-Transfer-Encoding: quoted-printable\r\n\r\n"
. "%s\n";
$body = "This is a multipart message.\r\n\r\n"
. sprintf($sectionfmt, "html", $messagehtml)
. sprintf($sectionfmt, "plain", $messagetext)
. "--" . $boundary . "--\r\n";
$mailb = mail($to, $subject, $body, implode("\r\n", $headers));
これが決してこれを行う正しい方法だと言っているわけではありませんが、戦略に魅力を感じ、6か月または12か月間見ていなかった後でもこのようなコードを維持できると思う場合(つまり、それは理にかなっています)一見すると)、自由に使用または適応してください。
免責事項:これはテストされておらず、時々私はタイプミスをします...人々を緊張させないようにするためです. :)