Проблемы с электронной почтой через кнопку отправки

После просмотра моего сайта пользователь может отправить мне по электронной почте файл и краткое описание, чтобы согласиться с ним. Однако, как только пользователь моего веб-сайта нажимает кнопку "Отправить", он переходит на страницу с надписью "эта веб-страница недоступна", и я не получаю электронное письмо.

Я использовал PHP и HTML для этой части моего сайта, и я не знаю, почему он не работает.

PHP

<?php
mail('Example@gmail.com', $_POST['Subject'], $_POST['Content']);
?>

HTML

<form method="post" action="email.php">
<input type="file">
<input type="text">
Content Goes Here
<br>
<br>
<input type="Submit">
</form>

2 ответа

Попробуйте использовать что-то вроде libmail класс для отправки писем, в большинстве случаев это решает проблему.
Если даже после того, как сделать это работать с libmail вы получите проблемы, попробуйте использовать SMTP вместе с libmail.
Приветствия.

Конечно, вот пример использования:

Скачать класс php_libmail можно по этой ссылке http://webi.ru/base/files/tovar/php_libmail_2_1.zip

Затем используйте этот код:

<?php
include "libmail.php"; // including the class
$m= new Mail; // create instance
$m->From( "asd@asd.com" ); // from
$m->To( "who@asad.com" ); // to
$m->Subject( "Subject zzz" ); // subject
$m->Body( "Hey, pal" ); // body
$m->Cc( "copy@asd.com"); // copy of email, if need
$m->Bcc( "bcopy@asd.com"); // hidden copy of email, if need
$m->Priority(3) ;    // priority of message, i think from 1 to 5
$m->Attach( "asd.gif","", "image/gif" ) ; // attachment, if need
$m->smtp_on( "smtp.asd.com", "login", "password" ) ; // via SMTP, if need
$m->Send();    // And the magic Send ;)

echo "Message body:<br><pre>", $m->Get(), "</pre>";
?>

Для создания нужной вам функциональности просто создайте простую HTML-форму с enctype="multipart/form-data" атрибут и добавить любые поля, которые вы хотите, файлы, входные данные, тексты, любые из них.
И затем в вашем PHP-скрипте примите эти значения полей через глобальную переменную $_POST и передайте принятые значения в экземпляр libmail;)
Для принятых файлов используйте глобальную переменную $_FILES.

Вы можете просто использовать PHP Mailer для отправки любой почты. Это очень полезный и простой способ сделать такую ​​работу.

Код был бы как

<?php

require_once "vendor/autoload.php";

//PHPMailer Object
$mail = new PHPMailer;

//From email address and name
$mail->From = "from@yourdomain.com";
$mail->FromName = "Full Name";

//To address and name
$mail->addAddress("recepient1@example.com", "Recepient Name");
$mail->addAddress("recepient1@example.com"); //Recipient name is optional

//Address to which recipient will reply
$mail->addReplyTo("reply@yourdomain.com", "Reply");

//CC and BCC
$mail->addCC("cc@example.com");
$mail->addBCC("bcc@example.com");

//Send HTML or Plain Text email
$mail->isHTML(true);

$mail->Subject = "Subject Text";
$mail->Body = "<i>Mail body in HTML</i>";
$mail->AltBody = "This is the plain text version of the email content";

if(!$mail->send()) 
{
    echo "Mailer Error: " . $mail->ErrorInfo;
} 
else
{
    echo "Message has been sent successfully";
}

Вот иллюстративный пример, приведенный для этого.

Другие вопросы по тегам