PHP表单赢得';t将信息发送到电子邮件地址“;有时";

PHP表单赢得';t将信息发送到电子邮件地址“;有时";,php,forms,sendmail,Php,Forms,Sendmail,我是这个社区的新成员,正如你可能猜到的,我有点麻烦了!我已经在几个阶段为一个客户端做了一个PHP表单。。。这意味着它将信息从表单的一个级别发布到另一个级别,直到最后一个阶段实际调用sendmail.php文件,该文件将所有收集的信息发送到一个电子邮件地址 问题是,它不总是工作,它是驾驶疯狂,因为我不能发现任何错误与PHP。。。我们从托管公司迁移过来,认为这可能是以前托管公司的PHP设置/版本的问题,但问题仍然存在 请查看我的sendmail表单: <?php $to = 'info@dom

我是这个社区的新成员,正如你可能猜到的,我有点麻烦了!我已经在几个阶段为一个客户端做了一个PHP表单。。。这意味着它将信息从表单的一个级别发布到另一个级别,直到最后一个阶段实际调用sendmail.php文件,该文件将所有收集的信息发送到一个电子邮件地址

问题是,它不总是工作,它是驾驶疯狂,因为我不能发现任何错误与PHP。。。我们从托管公司迁移过来,认为这可能是以前托管公司的PHP设置/版本的问题,但问题仍然存在

请查看我的sendmail表单:

<?php
$to = 'info@domain.co.uk';
$subject = 'Enquiry from domain Website';

//assigns an email address if the user leaves email field blank
if ($_POST['email'] == '') { $_POST['email'] = 'no-reply@domain.co.uk'; }

$body = '';
$body .= 'First Name: ';
$body .= $_POST['fname']. "\n". "\n";

$body .= 'Last Name: ';
$body .= $_POST['lname']. "\n". "\n";

$body .= 'Company: ';
$body .= $_POST['company']. "\n". "\n";

$body .= 'Job Role: ';
$body .= $_POST['role']. "\n". "\n";

$body .= 'Telephone: ';
$body .= $_POST['phone']. "\n". "\n";

$body .= 'Email: ';
$body .= $_POST['email']. "\n". "\n". "\n";

$body .= 'ANSWERS TO FORM QUESTIONS:'. "\n". "\n";

$body .= 'question1?: '."\n";
$body .= $_POST['question_1']. "\n". "\n";

$body .= 'question2?: '."\n";
$body .= $_POST['question_2']. "\n". "\n";

$body .= 'question3?: '."\n";
$body .= $_POST['question_3']. "\n". "\n";

$body .= 'question4?: '."\n";
$body .= $_POST['question_4']. "\n". "\n";

$body .= 'extra info?: '."\n";
$body .= $_POST['question_5']. "\n". "\n";

$message = $body;
$headers = "From: ".$_POST['email']. "\n" .
"Reply-To: ".$_POST['email']. "\n" .
"X-Mailer: PHP/" . phpversion();

mail($to, $subject, $message, $headers);
if (mail == TRUE) {

$to = $_POST['email'];
$subject = 'Thank you for using domain.co.uk';

$body2 .= "Thank you for your enquiry, it has now been sent"."\n";
$body2 .= "We will now search and find the best low cost solution providers to     assist you get your money back as quickly as possible."."\n";
$body2 .= "They will contact you (normally within 2 working hours) with a FREE risk     analysis on your requirements."."\n";
$body2 .= "Thank you for using the services of domain.co.uk";

$message = $body2;

$headers = 'From: info@domain.co.uk' . "\n" .
    'Reply-To: info@domain.co.uk' . "\n" .
    'X-Mailer: PHP/' . phpversion();

$mail = mail($to, $subject, $message, $headers);

header('Location: http://www.domain.co.uk/mobile/thankyou-mobile.php');
}
else
{
header('Location: http://www.domain.co.uk/mobile/error-mobile.php');
}
?>


我也遇到了同样的问题,没有找到可靠的解决方案。从那时起,我一直在使用这个插件->并且从那时起我就没有遇到过问题。

这是什么
if(mail==TRUE)
另外,我建议您不要直接在字符串中使用
$\u POST
值。有时这些值不会被发送,或者客户端愚弄了脚本。这就是为什么您应该使用
isset()
检查是否所有步骤都已设置,并且使用
empty()
检查它们是否为空。就像上面Pavel评论的那样,这是什么东西?如果你使用if(mail($to,$subject,$body,$header)),而不是if(mail==true),那不是更明智吗。。。首先,我不是PHP方面的专家,所以我使用了公司现有网站(不是我自己做的)的表单代码,并修改了:(我发现函数mail返回的布尔值可以通过TRUE或FALSE进行验证,所以我只留下了它…但现在我会检查,因为这似乎是问题所在!!谢谢各位,我会在做一些测试后立即更新Shi Severin,谢谢你们,它现在在使用PHP Mailer类时工作得非常好。很高兴我能提供帮助。将此答案标记为。)如果对你有帮助,那就对了:)