Проблемы с электронной почтой через кнопку отправки
После просмотра моего сайта пользователь может отправить мне по электронной почте файл и краткое описание, чтобы согласиться с ним. Однако, как только пользователь моего веб-сайта нажимает кнопку "Отправить", он переходит на страницу с надписью "эта веб-страница недоступна", и я не получаю электронное письмо.
Я использовал 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";
}
Вот иллюстративный пример, приведенный для этого.