php简单联系人表单即使在确认后也不发送邮件

php简单联系人表单即使在确认后也不发送邮件,php,xhtml,forms,smtp,Php,Xhtml,Forms,Smtp,我一直在尝试在我的公文包网站(目前是免费的megabyet.net帐户)上使用php联系人表单,但在测试时(在上传的网站上),即使我收到了感谢/确认消息,我仍然没有在我的邮件帐户上收到任何消息(在代码中指定),我似乎无法理解这里的问题……需要帮助 它可能与SMTP有关吗 代码如下: <?php if(isset($_POST['submit'])) { $to = "vishu_unlocker@yahoo.com"; $subject = "Portfolio Contact"; $

我一直在尝试在我的公文包网站(目前是免费的megabyet.net帐户)上使用php联系人表单,但在测试时(在上传的网站上),即使我收到了感谢/确认消息,我仍然没有在我的邮件帐户上收到任何消息(在代码中指定),我似乎无法理解这里的问题……需要帮助

它可能与SMTP有关吗


代码如下:

<?php
if(isset($_POST['submit'])) {

$to = "vishu_unlocker@yahoo.com";
$subject = "Portfolio Contact";
$name_field = $_POST['name'];
$email_field = $_POST['email'];
$message = $_POST['message'];
$headers = "From: $email_field";
$body = "From: $name_field\n E-Mail: $email_field\n Message:\n $message";

echo "Mail has been sent, thankyou!";
mail($to, $subject, $body, $headers);

} else {

echo "blarg!";

}
?>

HTML代码:

<form id="contact_frm" action="mail.php" method="POST">
<h4>Name :</h4>
<input type="text" id="f_name" name="name"/><br/><br/>
<h4>E-Mail Address :</h4>
<input type="text" id="f_email" name="email"/><br/><br/>
<h4>Message :</h4>
<textarea id="f_msg" name="message" cols="22" rows="5"/></textarea><br/><br/>
<input id="send_btn" type="submit" value="Send >>" name="submit" /><br/>
</form>

姓名:


电子邮件地址:

信息:




首先,您应该检查
mail()
是否返回true,以确定邮件是否已成功发送:

<?php
if(isset($_POST['submit'])) {

    $to = "vishu_unlocker@yahoo.com";
    $subject = "Portfolio Contact";
    $name_field = $_POST['name'];
    $email_field = $_POST['email'];
    $message = $_POST['message'];
    $headers = "From: $email_field";
    $body = "From: $name_field\n E-Mail: $email_field\n Message:\n $message";

    $success = mail($to, $subject, $body, $headers);
    if ($success) {
        echo "Mail has been sent, thankyou!";
        // redirect to thank you page here
    }
    else {
        echo "message failed";
    }
} else {

echo "blarg!";

}
?>

试试看,让我们知道这是否有效


另外,您是否尝试发送到其他电子邮件地址?这可能是因为雅虎屏蔽了该网络主机的垃圾邮件。作为一个免费主机,这很可能是一种情况。

如果您正在寻找与通过SMTP发送电子邮件相关的内容。我建议您使用CodeIgniters邮件类

这还允许优雅地调试和处理SMTP错误

它可能与SMTP有关吗


可能吧。为什么不从MTA检查邮件Q和日志文件?

@John。。用下面的代码检查if条件,我得到一个失败的输出=/…因此我的
mail()
函数返回false=(…是的,我尝试过gmail,但邮件函数一开始运行不正常…它不工作

<?php
if(isset($_POST['submit'])) {

$to = "vishu_unlocker@yahoo.com";
$subject = "Portfolio Contact";
$name_field = $_POST['name'];
$email_field = $_POST['email'];
$message = $_POST['message'];
$headers = "From: $email_field";
$body = "From: $name_field\n E-Mail: $email_field\n Message:\n $message";

$success = mail($to, $subject, $body, $headers);

if($success) { 
 echo "Mail has been sent, thankyou!";

} else {
 echo "message sending failed!";
 }
} else {
 echo "blarg!";
 }
?>

输出-消息发送失败

那么,我需要在这里定义一些额外的参数吗?…我还看到我的主机将sendmail的路径指定为--
/usr/sbin/sendmail
这与我的邮件函数的行为不正确有关吗?…我的意思是我需要在其中定义sendmail参数吗

@unknown-嗯,codeigniter可能会有帮助,但我以前从未使用过它……让我们看看


@symcbean-对不起,我不知道怎么做:p…可能是因为我还不太熟悉SMTP?…还是一个学习者/初学者…

如果电子邮件发出正确,但从未到达,可能是被垃圾邮件过滤器截获了。几个月前我在回复邮件时写了几个要点:

  • 发件人地址(“发件人”)是否属于您服务器上的某个域?如果不是,请这样做
  • 您的服务器是否在黑名单上(例如,在spamhaus.org上检查IP)?这是共享主机的远程可能性
  • 邮件是否已通过垃圾邮件过滤器过滤?请在具有垃圾邮件文件夹的免费邮件程序中打开帐户并查找。此外,尝试将邮件发送到没有垃圾邮件过滤器的地址
  • 是否可能需要mail()的第五个参数“-f”来添加发件人地址?(请参阅PHP手册中的mail()命令)
  • 如果您有权访问日志文件,请按照上面的建议检查这些文件
  • 您是否检查“发件人:”地址以查找可能的退回邮件(“退回给发件人”)?您还可以设置单独的“错误收件人”地址

检查邮件返回。如果成功,它将为您提供true。您甚至可以在您的帐户上使用
mail()
吗?我想是的,因为邮件函数返回true…或者这还不足以确认吗?我尝试了上面的代码,得到了失败的输出=(…下面我的答案中有详细信息…我使发件人地址在我的服务器上属于我的域,它解决了mail()函数返回false的问题,现在我收到一条成功消息(来自修订后的代码),表示邮件()返回true,但我仍然没有收到任何邮件,并且,检查了我的垃圾邮件文件夹,没有任何内容,检查了spamhaus的主机-它不在黑名单中…日志文件没有显示任何相关内容,尽管我必须调查“-f”参数…如果您有任何其他建议/建议,请务必让我知道..感谢迄今为止的所有帮助…Can您是否尝试将邮件发送到没有垃圾邮件阻止的地址,以确保邮件正确发送?