php简单联系人表单即使在确认后也不发送邮件
我一直在尝试在我的公文包网站(目前是免费的megabyet.net帐户)上使用php联系人表单,但在测试时(在上传的网站上),即使我收到了感谢/确认消息,我仍然没有在我的邮件帐户上收到任何消息(在代码中指定),我似乎无法理解这里的问题……需要帮助 它可能与SMTP有关吗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"; $
代码如下:
<?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您是否尝试将邮件发送到没有垃圾邮件阻止的地址,以确保邮件正确发送?