PHP电子邮件表单 - 有些人得到HTML一些得到纯文本

时间:2011-03-24 17:24:58

标签: php email html-parsing html-email

我一直在努力想出这个问题。有些用户正在接收以纯文本形式发送的电子邮件(通过Flash表单),而其他用户则使用完整的HTML(就像它应该的那样)。

有谁知道为什么会发生这种情况,我可以在这里解决任何问题并确保它始终以HTML格式显示?

<?php
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
   if(empty($_POST['senderEmail'])){
   echo"no email address found";
   exit;
}
$senderName = $_POST['senderName'];
$senderEmail = $_POST['senderEmail'];
$senderPhone = $_POST['senderPhone'];
$senderMsg = nl2br($_POST['senderMsg']);
$sitename = "somesite";
$to_myself = "myemail";
$to_visitor = $_POST['senderEmail'];
$ToName = "somename";
$date = date("m/d/Y H:i:s");
$ToSubject = "Email From $senderName via $sitename";
$comments = $msgPost;

$EmailBody = "A visitor to $sitename has left the following information<br />
Sent By: $senderName<br />
Email: $senderEmail<br />
Phone: $senderPhone
<br /><br />
Message Sent:
<br />$senderMsg<br />";

$EmailBody_visitor = "You have just left the following information at $sitename <br />
Sent By: $senderName<br />
Email: $senderEmail<br />
Phone: $senderPhone
<br /><br />
Message Sent:
<br />$senderMsg<br />";  

$EmailFooter = "<br />Sent: $date<br /><br />";
$Message = $EmailBody.$EmailFooter;
$Message_visitor = $EmailBody_visitor.$EmailFooter;

$ok = mail($to_myself, $ToSubject, $Message, $headers . "From:$senderName <".$senderEmail.">");
$ok = mail($to_visitor, $ToSubject, $Message_visitor, $headers . "From:$sitename <".$to_myself.">");

if($ok){ 
echo "retval=1";
}else{ 
echo "retval=0";
}

?> 

2 个答案:

答案 0 :(得分:1)

这首先是邮件客户端问题。大多数当前的邮件程序都可以将HTML邮件转换为纯文本,如果这是用户首选的格式,则可以。

你的邮件不是完整的html文件,这进一步推动了这一点。您只使用了几个<br>代码,而不是完整的<html>文档。您应该使用完整的html页面模板。 (有关概述,请参阅http://articles.sitepoint.com/article/code-html-email-newsletters。)

第三,你没有要求,你的脚本可以发送垃圾邮件。您的代码中没有可见的验证码保护,收件人是完全免费的。通过Flash表单使用它可以提供一些默默无闻,但没有长期保护。

答案 1 :(得分:0)

我不会在您的电子邮件中使用
,因为许多较旧的电子邮件客户端无法识别这些是有效标签。发送后查看原始电子邮件也非常有用。可能会有一些有趣的事情在那里更加明显。