PHP邮件不返回True或False
我正在创建一个联系我们表单,该表单应通过电子邮件将表单内容发送给我。我尝试在本地主机上发送邮件,但没有成功,但在主机上(1和1)可以完美工作。现在,我正在一台新主机(网络公司)上试用。出于某种明显的原因,mail函数不发送邮件,也不返回真/假值。我整晚都在用谷歌搜索解决方案或理论,但没有用。是什么导致了这种奇怪的结果 这是邮件的PHPPHP邮件不返回True或False,php,html,email,post,return,Php,Html,Email,Post,Return,我正在创建一个联系我们表单,该表单应通过电子邮件将表单内容发送给我。我尝试在本地主机上发送邮件,但没有成功,但在主机上(1和1)可以完美工作。现在,我正在一台新主机(网络公司)上试用。出于某种明显的原因,mail函数不发送邮件,也不返回真/假值。我整晚都在用谷歌搜索解决方案或理论,但没有用。是什么导致了这种奇怪的结果 这是邮件的PHP <?php class zMail { final public function compileMail() { global $tpl, $z
<?php
class zMail {
final public function compileMail() {
global $tpl, $zip;
$tpl->Define('error', null);
# Ensure that the form was sent #
if(isset($_POST['contact-us'])) {
# Make sure that the variables are set for the mailing process #
$first_name = $_POST['f_name'];
$last_name = $_POST['l_name'];
$event_type = $_POST['event'];
$date = $_POST['date'];
$guests = $_POST['guests'];
$from = $_POST['email'];
$phone = $_POST['phone'];
# Place Where E-Mail should be sent to #
$to = $zip['Social']['Email'];
# Are all fields completed? #
if(!empty($first_name) && !empty($last_name) && !empty($event_type) && !empty($date) && !empty($guests) && !empty($from) && !empty($phone)) {
switch($event_type) {
case '1':
return 'Baby Shower';
break;
case '2':
return 'Wedding';
break;
case '3':
return 'Kids Party';
break;
case '4':
return 'Birthday';
break;
case '5':
return 'Other';
break;
}
switch($guests) {
case '1':
return '10-25 People';
break;
case '2':
return '25 - 50 People';
break;
case '3':
return '50 - 75 People';
break;
case '4':
return '75 - 100+ People';
break;
}
$message = '<ul>
<li><b>First & Last Name: </b><span style="float: right;">' . $first_name . ' ' . $last_name . '</span></li>
<li><b>Event Type: </b><span style="float: right;">' . $event_type . '</span></li>
<li><b>Date: </b><span style="float: right;">' . $date . '</span></li>
<li><b>Guests: </b><span style="float: right;">' . $guests . '</span></li>
<li><b>Email: </b><span style="float: right;">' . $from . '</span></li>
<li><b>Telephone: </b><span style="float: right;">' . $phone . '</span></li>
<li><b>Add`l Information: </b><span style="float: right;">' . $notes . '</span></li>
</ul>';
$subject = "{site: title} - New Client Inquiry";
$headers = "From: IntactDev@gmail.com\r\n" .
'X-Mailer: PHP/' . phpversion() . "\r\n" .
"MIME-Version: 1.0\r\n" .
"Content-Type: text/html; charset=utf-8\r\n" .
"Content-Transfer-Encoding: 8bit\r\n\r\n";
$retval = mail($to, $subject, $message, $headers);
if($retval == true) {
$tpl->Define('error', '<span class="error">Message sent successfully!</span>');
} else {
$tpl->Define('error', '<span class="error">Email could not be sent!</span>');
}
} else {
$tpl->Define('error', '<span class="error">Please fill in all fields!</span>');
}
}
}
}
?>
您检查端口25是否打开了吗?以下是一个链接:
所以我很好奇这在另一台主机上是如何工作的。在您进入邮件功能之前,您将退出该功能
您的两个switch语句:
switch($event_type) {
case '1':
return 'Baby Shower';
break;
case '2':
return 'Wedding';
break;
case '3':
return 'Kids Party';
break;
case '4':
return 'Birthday';
break;
case '5':
return 'Other';
break;
}
switch($guests) {
case '1':
return '10-25 People';
break;
case '2':
return '25 - 50 People';
break;
case '3':
return '50 - 75 People';
break;
case '4':
return '75 - 100+ People';
break;
}
这些是返回的字符串,这意味着只要匹配了一个case,switch语句之后就不会执行任何代码
可能您正试图重新定义变量,如下所示:
switch($event_type) {
case '1':
$event_type = 'Baby Shower';
break;
case '2':
$event_type = 'Wedding';
break;
case '3':
$event_type = 'Kids Party';
break;
case '4':
$event_type = 'Birthday';
break;
case '5':
$event_type = 'Other';
break;
}
switch($guests) {
case '1':
$guests = '10-25 People';
break;
case '2':
$guests = '25 - 50 People';
break;
case '3':
$guests = '50 - 75 People';
break;
case '4':
$guests = '75 - 100+ People';
break;
}
如果它不返回true
或false
,它会返回什么?var\u dump($retval)
的结果是什么?此外,如果您在应用程序中使用错误抑制,则在测试期间可能还需要var_dump(error_get_last()),它应该返回true或false。您这样说是因为您没有看到mail()
调用下面定义的任何错误消息吗?@Barmar它根本不返回任何值。。只刷新页面,但如果您将某个字段留空,它将抛出一个错误,这是不可能的。除非有错误信号和呼叫周围有try/catch
处理程序,否则if
的一个或另一个分支将始终被执行。在此情况下,我怀疑有什么东西正在覆盖错误范围,或者页面正在重定向。端口已打开,因此这不可能是问题所在。很高兴听到这个消息,你能接受这个答案供将来参考吗?我没有足够的代表点数来做这件事-但如果可以的话,我会接受的。