[英]php simple contact form not sending mail even after confirmation
我一直在尝试在我的投资组合网站(目前在免费的megabyet.net帐户上)上使用php联系人表格,但是即使我收到了Thankyou / confirmation消息,在进行测试(在上载的网站上)时,我仍然不会没有在我的邮件帐户(在代码中指定)上收到任何消息,在这里我似乎无法理解问题。...需要帮助!
可以和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!";
}
?>
试试看,让我们知道是否可行。
另外,您是否尝试过发送到其他电子邮件地址? 可能是Yahoo阻止了该Web主机的垃圾邮件。 作为免费主机,这很可能会发生。
如果您正在寻找与通过SMTP发送电子邮件相关的内容。 我建议您使用Code Igniters邮件程序类。
http://codeigniter.com/user_guide/libraries/email.html
这也允许优雅地调试和处理SMTP错误。
可以和SMTP相关吗?
大概。 为什么不检查MTA中的mailq和日志文件?
@John ..检查是否有以下代码的情况,我得到失败的输出= / ...所以我的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- hmm codeigniter可能会有所帮助,但我之前从未使用过...让我们看看...
@ symcbean-对不起,我不知道该怎么做:P ... probabaly cuz我还不是很熟悉SMTP吗?.....还是一个学习者/初学者...
如果电子邮件正确发送但从未发送,则可能是垃圾邮件过滤器捕获了该电子邮件。 我在几个月前回答类似问题时写了几点要点:
- 发件人地址(“发件人”)是否属于您服务器上的域? 如果不是,请这样做。
- 您的服务器是否列入黑名单(例如,在spamhaus.org上检查IP)? 共享托管的可能性很小。
- 邮件是否被垃圾邮件过滤器过滤? 使用带有垃圾邮件文件夹的freemailer开一个帐户,然后查找。 另外,请尝试将邮件发送到没有垃圾邮件过滤器的地址。
- 您是否可能需要mail()的第五个参数“ -f”添加发件人地址? (请参阅PHP手册中的mail()命令)
- 如果您有权访问日志文件,请按照上面的建议进行检查。
- 您是否检查“发件人:”地址中是否存在退回邮件(“退回发件人”)? 您也可以设置一个单独的“ errors-to”地址。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.