Я искал ответ и много раз пробовал эту проблему.
Мой скрипт отлично работает на моем веб-хосте, но при переносе на другой выделенный сервер почта никогда не доставляется. Теперь мне нужно установить SMTP-сервер, но не получится правильно.
Использование приложений Gmail кстати. Вот как выглядит код.
<?php if(!$_POST) exit; $email = $_POST['email']; //$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[AZ]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS'; if(!eregi("@",$email )){ $error.="Invalid email address entered"; $errors=1; } if($errors==1) echo $error; else{ $values = array ('name','email','telephone','message'); $required = array('name','email','telephone','message'); $your_email = "xxx@example.com"; $email_subject = "New Messag: ".$_POST['subject']; $email_content = "New message:\n"; foreach($values as $key => $value){ if(in_array($value,$required)){ if ($key != 'subject' && $key != 'telephone') { if( empty($_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; } } $email_content .= $value.': '.$_POST[$value]."\n"; } } if(@mail($your_email,$email_subject,$email_content)) { echo 'Message sent!'; } else { echo 'ERROR!'; } } $mail->Mailer = "smtp"; $mail->Host = "ssl://smtp.gmail.com"; $mail->Port = 465; $mail->SMTPAuth = true; // turn on SMTP authentication $mail->Username = "user@gmail.com"; // SMTP username $mail->Password = "password"; // SMTP password ?>
Итак, как правильно настроить параметры SMTP?
Только в Windows: вы можете попытаться использовать ini_set()
функцию Docs для SMTP
Docs и smtp_port
Docs :
ini_set('SMTP', 'mysmtphost'); ini_set('smtp_port', 25);
Проверьте свой php.ini, вы можете установить эти значения там.
Вот описание в руководстве по php: http://php.net/manual/en/mail.configuration.php
Если вы хотите использовать несколько разных SMTP-серверов в своем приложении, я рекомендую использовать «более крупную» почтовую инфраструктуру, pe Swiftmailer
Попробуйте использовать выделенный выделенный сервер для telnet для smtp.gmail.com на порту 465. Он может быть заблокирован вашим интернет-провайдером