2013-07-10 90 views
0

对于任何菜鸟错误,我都会提前道歉,因为这是我第一次尝试将HTML/PhP联系人表单拼凑在一起。我已经搜索过相同问题的以前的问题,并没有发现任何实质内容。简单联系表格的问题

问题是电子邮件没有发送。事情至此我已经试过: - 确认SMTP功能 - 确认它不是一个主机相关的问题 - 用在另一个模板这种具体形式/ PHP邮件和正常工作 - 经过垃圾邮件文件夹

这里联系表格本身:

<form action="contact.php" method="POST" id="contact-form" class="form"> 
    <input type="hidden" value="" name="check"> 
    <noscript> 
    <p class="noscript">JavaScript is required to use this form, please make sure your browser supports it.</p> 
    </noscript> 
    <p class="input"> 
    <label for="name" class="label">Name</label> 
    <input type="text" name="name" id="name"> 
    </p> 
    <p class="input"> 
    <label for="company" class="label">Company</label> 
    <input type="text" name="company" id="company"> 
    </p> 
    <p class="input"> 
    <label for="email" class="label">Email</label> 
    <input type="text" name="email" id="email"> 
    </p> 
    <p class="input"> 
    <label for="phone" class="label">Phone</label> 
    <input type="text" name="phone" id="phone"> 
    </p> 
    <p class="dark input"> 
    <label for="title" class="label">Project Title</label> 
    <input type="text" name="title" id="title"> 
    </p> 
    <p class="dark input"> 
    <label for="timeline" class="label">Timeline</label> 
    <input type="text" name="timeline" id="timeline"> 
    </p> 
    <p class="dark textarea"> 
    <label for="details" class="label">Details</label> 
    <textarea name="details" id="details"></textarea> 
    </p> 
    <p> 
    <label for="send" class="send-label">Everything look good? Click send.</label> 
    <input type="submit" value="Submit" name="submit" class="button"> 
    </p> 
    </form> 

这里是PHP邮件:

<?php 
    $field_name = $_POST['name']; 
    $field_company = $_POST['company']; 
    $field_email = $_POST['email']; 
    $field_phone = $_POST['phone']; 
    $field_title = $_POST['title']; 
    $field_timeline = $_POST['timeline']; 
    $field_message = $_POST['details']; 

    $mail_to = '[email protected]email.com'; 
    $subject = 'Quote request from '.$field_name; 

    $body_message = 'From: '.$field_name."\n"; 
    $body_message .= 'E-mail: '.$field_email."\n"; 
    $body_message .= 'Message: '.$field_message; 

    $headers = 'From: '.$field_email."\r\n"; 
    $headers .= 'Reply-To: '.$field_email."\r\n"; 

    $mail_status = mail($mail_to, $subject, $body_message, $headers); 

    if ($mail_status) { ?> 
    <script language="javascript" type="text/javascript"> 
    alert('Thank you for the message. We will contact you shortly.'); 
    window.location = 'contact.html'; 
    </script> 
    <?php 
    } 
    else { ?> 
    <script language="javascript" type="text/javascript"> 
    alert('Message failed. Please contact the webmaster.'); 
    window.location = 'contact.html'; 
    </script> 
    <?php 
    } 
    ?> 

仅供参考,在 “[email protected]” 是不是我使用的电子邮件。我用隐私目的的替代品。

谢谢!

+0

您是否在PHP.INI中启用邮件日志?如果是这样,它报告的情况是什么? – DevlshOne

回答

0

从PHP发送邮件充满了困难。您可能没有一个错误在你的代码,但邮件可能无法传递,因为(您想选择尽可能多的):

  • 它不会出现来自于服务器上的电子邮件地址;
  • 出站电子邮件在默认情况下被阻止,直到您要求为止;
  • 端口25上的出站邮件被阻止,您必须使用特定的服务器。
  • 您的服务器被列入黑名单;
  • 您的邮件被垃圾邮件过滤器阻止;
  • 其他一些原因。

让自己的生活变得简单。使用类似swiftmailerPHPmailer的库来处理发送邮件,并尝试一些简单的方法,例如传送到发送服务器上的地址。然后从那里开始工作。准备好必须使用SMTP身份验证,并且可能还需要付费的外部服务才能为您发送邮件。

+0

嗯,有趣的部分是我可以在同一个域中的同一个主机上使用同一收件人电子邮件的不同模板中使用这个确切的代码,它工作得很好。 – user2567016

+0

......这正是@Hobo的观点 - 直接调用mail()是非常不可靠的,因为在代码和环境中都有很多很容易出错的地方。使用图书馆。 – Synchro

0

$field_message是空白。它在表单上,​​然后在邮件处理脚本中位于何处?

+0

某些SMTP服务器不会发送没有邮件正文的邮件。 – DevlshOne

+0

糟糕。编辑字段时有点过分热情。固定(换成$ field_details $ field_message)。不幸的是,这不是问题。 – user2567016