У меня проблема с отправкой почтового сообщения функцией php mail () . Я не уверен, что это проблема с кодом coz. Я читал, что некоторые серверы хостинга не позволяют отправлять почту, но я пытаюсь отправить эту почту также, когда сайт находится на локальном хосте, и он все еще не работает – после нажатия кнопки " Отправить «Я вижу информацию:« Ваша почта отправлена », но когда я проверяю свой почтовый ящик, нет писем (также в спаме).
Для меня код выглядит неплохо, но, может быть, я чего-то не хватает. Второй вариант, который я рассматриваю, заключается в том, что мой локальный хост не позволяет отправлять письма.
<form id="contact" action="mail.php" method="POST"> <div class="field"> <label class="fixed_width" for="name">Name:</label><input id="name" name="name" value="Name"/> </div> <div class="field"> <label class="fixed_width" for="surname">Surname:</label><input id="surname" name="surname" value="Surname"/> </div> <div class="field"> <label class="fixed_width" for="mail">E-mail:</label><input id="mail" name="mail" value="E-mail"/> </div> <div class="field" id="message"> <label class="fixed_width" id="message_width" for="mail">Message:</label> <textarea id="message" name="message" />Type your message...</textarea> </div> <div> <input class="width" type="submit" value="Send" /> </div> </form> <?php srand((double)microtime()*1000000); $marker = md5(uniqid(rand())); $receiver = "address@gmail.com"; $title = "Mail"; $sender = $_POST['name']; $sender .= $_POST['surname']; $sender_mail = $_POST['mail']; $message = $_POST['message']; $headers = "From: $sender <$sender_mail>\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-Type: multipart/mixed;\n"; $headers .= "\tboundary=\"___$marker==\""; $content ="--___$marker==\n"; $content .="Content-Type: text/plain; charset=\"iso-8859-2\"\n"; $content .="Content-Transfer-Encoding: 8bit\n"; $content .="\n$message\n"; if (mail($receiver,$title,$content,$headers)) { print "Your message is sent."; } else { print "Your message is not sent. <br>Please go <a href=\"javascript:history.back();\">back</a> and send again."; } ?>
Фотографии с моим php conf:
Чтобы проверить, что отправка электронной почты работает, попробуйте эту очень короткую программу:
<?php $email_to="address@gmail.com"; $email_subject="It works"; $email_message="Hello. I can send mail!"; $headers = "From: Beacze\r\n". "Reply-To: address@gmail.com\r\n'" . "X-Mailer: PHP/" . phpversion(); mail($email_to, $email_subject, $email_message, $headers); echo "mail sent!" ?>
В прошлом я использовал один «как раз» в качестве отправной точки для тестирования конфигурации. Если это не работает, скорее всего, ваша конфигурация сервера.
Вы можете использовать SMTP (phpmailer)
Пример:
$mail = new PHPMailer(); $mail->IsSMTP(); $mail->CharSet = 'UTF-8'; $mail->Host = "mail.example.com"; // SMTP server example $mail->SMTPDebug = 0; // enables SMTP debug information (for testing) $mail->SMTPAuth = true; // enable SMTP authentication $mail->Port = 25; // set the SMTP port for the GMAIL server $mail->Username = "username"; // SMTP account username example $mail->Password = "password"; // SMTP account password example
Подробнее о PHPMailer вы можете найти здесь: https://code.google.com/a/apache-extras.org/p/phpmailer/