2015-04-15 7 views
0

Я строю веб-сайт с использованием Linode VPS.PHP не отправляет почту

Я использую Apache и PHP устанавливается с помощью:

apt-get install apache2 php 

Это HTML форма:

<form action="" class="form-horizontal" method="post"> 
    <div class="form-group"> 
     <label class="col-sm-2 control-label">Name</label> 
     <div class="col-sm-10"> 
     <input type="email" class="form-control" name="name" placeholder="Name"> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label class="col-sm-2 control-label">Email</label> 
     <div class="col-sm-10"> 
     <input type="text" class="form-control" name="email" placeholder="Email"> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label class="col-sm-2 control-label">IP</label> 
     <div class="col-sm-10"> 
     <input type="text" class="form-control" name="ip" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" disabled> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label class="col-sm-2 control-label">Message</label> 
     <div class="col-sm-10"> 
     <textarea class="form-control" rows="4" name="message"></textarea> 
     </div> 
    </div> 
    <div class="form-group"> 
     <div class="col-sm-offset-2 col-sm-10"> 
     <button type="submit" class="btn btn-default">Submit</button> 
     </div> 
    </div> 
    </form> 

Это PHP пытается отправить почту:

<?php 
ini_set('display_errors',1); 
ini_set('display_startup_errors',1); 
error_reporting(-1); 

if(isset($_POST['email'])) { 
    $email_to = "[email protected]"; 
    $email_subject = "Contact Form"; 

    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $ip = $_POST['ip']; 
    $message = $_POST['message']; 


    $email_message = "Name: ".$name."\n"; 
    $email_message .= "Email: ".$email."\n"; 
    $email_message .= "IP: ".$ip."\n"; 
    $email_message .= "Message: ".$message."\n"; 

    $headers = 'From: '.$email."\r\n". 
      'Reply-To: '.$email."\r\n" . 
      'X-Mailer: PHP/' . phpversion(); 

mail($email_to, $email_subject, $email_message, $headers); 
?> 
<div class="panel panel-success"> 
    <div class="panel-body"> 
    Message sent. 
    </div> 
</div> 
<?php 

} 

?> 

проблема в том, что никакая электронная почта не получена, и никакое электронное письмо не помечено как спам.

Я добавил PHP сообщения об ошибках:

ini_set('display_errors',1); 
ini_set('display_startup_errors',1); 
error_reporting(-1); 

, не сообщать о любых ошибках.

+0

Вы использовали оператор «stfu» '@' ..., это предотвратит ошибки почты при ошибках печати – Marc

+0

используйте почту вместо @mail. –

+0

также прокомментировать // error_reporting (-1); – Noman

ответ

0

Сначала вы должны указать, какая почтовая программа настроена на вашем сервере. Secoundary я бы проверить, указан ли этот почтовый ящик и правильный путь в файле конфигурации php.ini. Только отправная точка ...

+0

Я не установил ничего, кроме пакетов' apache2' и 'php'. Я думал, что PHP способен отправлять почту. Ему нужна сторонняя почтовая программа? –

+0

Да, это нужно; в основном PHP использует установленную почтовую программу (если правильно сконфигурировать файл mailer AND php.ini). – holden

+0

На мой взгляд, ваш контрольный список будет: a) Обнаружение того, какой почтовый клиент вы установили (если бы я был вами, я бы выбрал постфикс) b) Проверьте и исправьте конфигурацию почтовой программы в соответствии с вашими потребностями (базовая конфигурация должна быть достаточной для PHP pourpose) в случае постфикса хорошая отправная точка: http://www.postfix.org/STANDARD_CONFIGURATION_README.html c) Попробуйте отправить почту с вашего сервера, используя соответствующую команду SSH (это зависит от почтовой программы) d) проверьте файл журнала почты, если почта не прибывает, и попытайтесь понять, почему e) если все идет гладко, измените файл php.ini, чтобы правильно указать почтовый ящик – holden

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