为什么我的PHP电子邮件没有HTML和utf-8?

时间:2017-06-04 08:21:00

标签: php html smtp

我有一个联系表单,想要用HTML格式化输出电子邮件并使用charset utf-8,因为我需要一些特殊字符。我有以下代码,但它不起作用。 编辑:电子邮件已发送,但没有html和utf-8。

<?php 
if ($_POST["email"]<>'') { 
    $ToEmail = 'contact@domain.com'; 
    $EmailSubject = 'Email Subject'; 
    $mailheader = 'From: donotreply@domain.com' . "\r\n" .
        'Reply-To:' .$_POST["email"]. "\r\n" .
        'X-Mailer: PHP/' . phpversion();
        'MIME-Version: 1.0'."\r\n".
        'Content-Type: text/html; charset=utf-8'."\r\n".
    $MESSAGE_BODY .= "<b>Navn:</b> ".$_POST["name"]."\r\n"; 
    $MESSAGE_BODY .= "<b>Telefon:</b> ".$_POST["telephone"]."\r\n";
    $MESSAGE_BODY .= "<b>Email:</b> ".$_POST["email"]."\r\n\r\n"; 
    $MESSAGE_BODY .= "".nl2br($_POST["message"])."\r\n"; 
    mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure"); 
?>

2 个答案:

答案 0 :(得分:0)

尝试从

更改标题
$headers .= "Content-Type: text/html; charset=UTF-8\r\n"; 
to 
$headers .= "Content-Type: text/html; charset=iso-8859-1\r\n";

更好地使用PHPMailer这将允许您通过SMTP服务器发送邮件

答案 1 :(得分:0)

我发现唯一错误的是代码的顺序。通过在Content-Type下面移动'X-Mailer: PHP/' . phpversion();,邮件编码正确。

这就是我修复它的方法:

$mailheader = 'From: donotreply@domain.com' . "\r\n" . 'Reply-To:' .$_POST["email"]. "\r\n" . 'MIME-Version: 1.0'."\r\n". 'Content-Type: text/html; charset=utf-8'."\r\n". 'X-Mailer: PHP/' . phpversion();