【问题标题】:contact form sending blank emails联系表格发送空白电子邮件
【发布时间】:2013-12-29 12:39:08
【问题描述】:

谁能想出一个合乎逻辑的原因,为什么在我的 123 reg 帐户上运行良好的联系表在我的客户帐户上却无法运行?当我在我这边进行测试时,我将电子邮件和表单内容完美地发送到了我的收件箱,但是当我的客户帐户使用相同的代码以及他的电子邮件地址时,他会收到一封没有数据的电子邮件..

<?php

$EmailFrom = "webmaster@pb.co.uk";
$EmailTo = "loans@website.co.uk";
$Subject = "Testing";
$Name = Trim(stripslashes($_POST['Name'])); 
$Email = Trim(stripslashes($_POST['Email'])); 
$Message = Trim(stripslashes($_POST['Message'])); 

// validation
$validationOK=true;
if (!$validationOK) {
    print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
    exit;
}

// prepare email body text
$Body = "";
$Body .= "Name: ";
$Body .= $Name;
$Body .= "\n";
$Body .= "eMail: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $Message;
$Body .= "\n";

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: $EmailFrom");

// redirect to success page 
if ($success){
    print "<meta http-equiv=\"refresh\" content=\"0;URL=http://website/thankyou.html\">";
}
else{
    print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}
?>

【问题讨论】:

  • 客户端是否有正确配置的邮件服务器?
  • 嗨,是的。根据 123 支持团队的说法。这就是他们所提供的帮助.. 他确实收到了电子邮件,但没有将任何数据输入到表单中..
  • 我建议你把 .= 改成 simple 。 $Body = "Name: ".$Name."\n";$Body .= "Name: "; $Body .= $Name; $Body .= "\n"; 更容易,并且避免在变量名中使用大写字母...
  • 您好,您觉得这合适吗? // 准备邮件正文 $Body = ""; $Body = "name: ".$name."\n"; $Body = "姓名:".$email."\n"; $Body = "name: ".$message."\n";

标签: php email


【解决方案1】:

改变

"From: $EmailFrom"

"From: $EmailFrom" . "\r\n" 

【讨论】:

  • 您好,您能告诉我这是什么意思吗?我刚刚了解了我的主机提供的基本脚本
  • 关注此行$success = mail($EmailTo, $Subject, $Body, "From: $EmailFrom"); 并重新阅读我的答案。
【解决方案2】:

添加标题。

$Body  = 'MIME-Version: 1.0' . "\r\n";
$Body .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$Body .= 'From: '. $EmailFrom . "\r\n" . 'X-Mailer: PHP/' . phpversion();

【讨论】: