如何获得;从「;使用PHP邮件处理电子邮件HTML正文的代码?

如何获得;从「;使用PHP邮件处理电子邮件HTML正文的代码?,php,Php,有趣的是,如果我从代码中删除$,它也会正确地呈现html电子邮件。如果我将$from代码添加回,则$from将正常工作,但会在电子邮件正文中显示整个html脚本代码。我正试图找出如何让from和html电子邮件一起正常工作。我尝试了\n\r和\r但没有任何效果。这是一个或另一个与此代码 $from = 'MyOwnEmail'; $to = $email; $subject = 'Test '; $message_body = '<html><html>'

有趣的是,如果我从代码中删除
$,它也会正确地呈现html电子邮件。如果我将
$from
代码添加回,则
$from
将正常工作,但会在电子邮件正文中显示整个html脚本代码。我正试图找出如何让from和html电子邮件一起正常工作。我尝试了
\n\r
\r
但没有任何效果。这是一个或另一个与此代码

$from    = 'MyOwnEmail';
$to      = $email;
$subject = 'Test ';
$message_body = '<html><html>';

$headers = 'MIME-Version: 1.0';
$headers = 'Content-type: text/html; charset=iso-8859-1';
$headers = "From: $from"; 
mail( $to, $subject, $message_body, $headers);
$from='MyOwnEmail';
$to=$email;
$subject='Test';
$message_body='';
$headers='MIME版本:1.0';
$headers='内容类型:text/html;字符集=iso-8859-1';
$headers=“From:$From”;
邮件($to、$subject、$message\u body、$headers);

附加标题而不是覆盖

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

附加标题而不是覆盖

$headers = 'MIME-Version: 1.0'."\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n";
$headers .= "From: $from"."\r\n";
每次为
$headers
指定一个新值时,都会替换旧值

因此,您需要了解如何将多个头放入变量中。见:

要插入到电子邮件标题末尾的字符串

这通常用于添加额外的标头(从、抄送和密件抄送)应使用CRLF(\r\n)分隔多个额外的标头。如果使用外部数据组成此标头,则应清理数据,以便不会插入不需要的标头

所以您仍然需要一个字符串,但它必须是一个包含所有标题的字符串,并且需要用新行分隔

最干净的方法是将所有头放在一个数组中,然后加入它们

$header_list = [ 'MIME-Version: 1.0', 'Content-type: text/html; charset=iso-8859-1', "From: $from" ];
$header = implode("\r\n", $header_list);
每次为
$headers
指定一个新值时,都会替换旧值

因此,您需要了解如何将多个头放入变量中。见:

要插入到电子邮件标题末尾的字符串

这通常用于添加额外的标头(从、抄送和密件抄送)应使用CRLF(\r\n)分隔多个额外的标头。如果使用外部数据组成此标头,则应清理数据,以便不会插入不需要的标头

所以您仍然需要一个字符串,但它必须是一个包含所有标题的字符串,并且需要用新行分隔

最干净的方法是将所有头放在一个数组中,然后加入它们

$header_list = [ 'MIME-Version: 1.0', 'Content-type: text/html; charset=iso-8859-1', "From: $from" ];
$header = implode("\r\n", $header_list);

解决方案-昆汀帮助修复-谢谢

$from    = 'MyOwnEmail';
$to      = $email;
$subject = 'Test ';
$message_body = '<html></html>';

$header_list = [ 'MIME-Version: 1.0', 'Content-type: text/html; charset=iso-8859-1', "From: $from" ];
$header = implode("\r\n", $header_list);

mail( $to, $subject, $message_body, $header);
$from='MyOwnEmail';
$to=$email;
$subject='Test';
$message_body='';
$header_list=['MIME Version:1.0','Content type:text/html;charset=iso-8859-1','From:$From';
$header=内爆(“\r\n”,$header\u列表);
邮件($to、$subject、$message\u body、$header);

解决方案-通过昆汀帮助修复-谢谢

$from    = 'MyOwnEmail';
$to      = $email;
$subject = 'Test ';
$message_body = '<html></html>';

$header_list = [ 'MIME-Version: 1.0', 'Content-type: text/html; charset=iso-8859-1', "From: $from" ];
$header = implode("\r\n", $header_list);

mail( $to, $subject, $message_body, $header);
$from='MyOwnEmail';
$to=$email;
$subject='Test';
$message_body='';
$header_list=['MIME Version:1.0','Content type:text/html;charset=iso-8859-1','From:$From';
$header=内爆(“\r\n”,$header\u列表);
邮件($to、$subject、$message\u body、$header);

那是因为你每次都在覆盖
$headers
,那是因为你每次都在覆盖
$headers
,这是行不通的。您已经将内容类型和from头作为mime版本头的一部分,而不是作为它们自己的头。您需要在它们之间添加新行。已使用尝试该示例,但执行了一个或另一个。这将不起作用。您已经将内容类型和from头作为mime版本头的一部分,而不是作为它们自己的头。它们之间需要新行。已使用该示例进行了尝试,\r\n并执行了一个或另一个操作。我还没有尝试将它们组合为一个数组,让我测试一下,看看是否有效。我不熟悉标题。感谢您提供的信息。这不起作用,它没有显示来自任何人的信息,并且在电子邮件正文中显示了html代码。顺便说一句,我总是收到电子邮件。它没有做到这一点或那一点。这是用gmail测试的。它工作正常,我发现了问题所在。上面的语句有效。我没有尝试将它们组合成一个数组,让我测试一下,看看它是否有效。我不熟悉标题。感谢您提供的信息。这不起作用,它没有显示来自任何人的信息,并且在电子邮件正文中显示了html代码。顺便说一句,我总是收到电子邮件。它没有做到这一点或那一点。这是用gmail测试的。它工作正常,我发现了问题所在。上面的陈述奏效了。谢谢昆汀帮了我。谢谢昆汀帮了我。