2013-07-10 2 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]'; 
    $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 заблокирована, и вам необходимо использовать определенный сервер.
  • ваш сервер внесен в черный список;
  • ваше сообщение заблокировано от спам-фильтра;
  • некоторые другие причины.

Сделайте жизнь легкой для себя. Используйте библиотеку, например swiftmailer или PHPmailer, чтобы обрабатывать отправку почты и попробовать что-то простое, как доставка на адрес на отправляющем сервере. Затем поработайте оттуда. Будьте готовы к использованию аутентификации SMTP и, возможно, платной внешней службы для отправки почты для вас.

+0

Ну, интересная часть: я могу использовать этот точный код в другом шаблоне под одним и тем же доменом с одного и того же хоста с тем же адресом электронной почты получателя, и он отлично работает. – user2567016

+0

... который точно @ Hobo point - call mail() напрямую является крайне ненадежным, потому что есть так много, что легко ошибиться как в коде, так и в среде. Используйте библиотеку. – Synchro

0

$field_message не имеет значения. Где он находится на форме, а затем в скрипте обработки почты?

+0

Некоторые SMTP-серверы не будут отправлять электронные письма без тела сообщения. – DevlshOne

+0

К сожалению. При редактировании полей немного переусердствовал. Исправлено (заменено $ field_details для $ field_message). К сожалению, это не проблема. – user2567016

Смежные вопросы