2016-08-19 2 views
0

У меня возникли проблемы с отправкой сообщений электронной почты с классом PHPMailer, после того как я отправил форму, это сообщение появляется: «сообщение отправлено», но я не получаю никаких писем, и я даже проверили папку спама и ее пустую.Проблема с отправкой писем через контактную форму с помощью PHPMailer

здесь HTML-код формы:

<form action="<?php echo $PHP_SELF; ?>" method="post"> 

<input type="text" class="form-control" placeholder="Name" name="name"> 

<input type="email" class="form-control" placeholder="Email" name="email"> 

<input type="text" class="form-control" placeholder="Subject" name="subject"> 

<textarea class="form-control" placeholder="Message" rows="7" name="message"> </textarea> 

<input type="submit" class="form-control" name="submit" value="submit"> 

</form> 

и код РНР:

<?php 
if(isset($_POST['email'])) { 

    if(isset($_POST['subject'])){ $subject = $_POST['subject']; } 
    if(isset($_POST['message'])){ $message = $_POST['message']; } 
    if(isset($_POST['name'])){ $name = $_POST['name']; } 
    if(isset($_POST['email'])){ $email = $_POST['email']; } 

require_once('class.phpmailer.php'); 

$mail    = new PHPMailer(); 

$body    = $message; 

$mail->SetFrom($email, $name); 

$address = "[email protected]"; 
$mail->AddAddress($address, "[email protected]"); 

$mail->Subject = $subject; 

$mail->MsgHTML($body); 

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

?> 
+3

Предлагаю вам проверить конфигурацию SMTP. У вас есть действующий параметр SMTP для почтового сервера? Из ваших кодов вы не используете SMTP-сервер для отправки писем. Таким образом, электронные письма не будут отправляться, даже если ваш код верен, и успех возвращается. – d3r1ck

+0

Когда оставлено unconfigured (нет SMTP-реле), PHPMailer использует тот же транспорт, что и функция mail(). Таким образом, применяются те же условия. Включить отладку, проверить журналы, DKIM/SPF и т. Д. И т. Д. И т. Д. – mario

+0

Спасибо за ваши ответы и предложения, я отредактировал PHP-код и добавил smtp-конфигурации с отключенным smtp-аутентификатором, потому что домен не нуждается в аутентификации, но проблема все еще то же ...... –

ответ

0

Вот ваш HTML код

<form action="yourphpcode.php" method="post"> 

<input type="text" class="form-control" placeholder="Name" name="name"> 

<input type="email" class="form-control" placeholder="Email" name="email"> 

<input type="text" class="form-control" placeholder="Subject" name="subject"> 

<textarea class="form-control" placeholder="Message" rows="7" name="message"> </textarea> 

<input type="submit" class="form-control" name="submit" value="submit"> 

</form> 

вот ваш PHP код

<?php 
if (isset($_POST['submit'])) { 


    $subject = "subject : " . $_POST['subject'] . "<br>"; 
    $message = "message :" . $_POST['message'] . "<br>"; 
    $name = "name :" . $_POST['name'] . "<br>"; 
    $email = "email :" . $_POST['email'] . "<br>"; 

    $message = " 
\n $subject \n 
\n $message \n 
\n $name \n 
\n $email \n 

"; 
    echo $message; 

    include "PHPMailer_5.2.4/class.phpmailer.php"; 

    $mail = new PHPMailer; 
    $mail->isSMTP(); 
    $mail->Host = 'smtp.gmail.com'; 

    $mail->SMTPAuth = true; 
    $mail->Username = '[email protected]'; 
    $mail->Password = 'password'; 
    $mail->SMTPSecure = 'tls'; 
    $mail->Port  = 587; 
    $mail->setFrom('[email protected]', 'Mailer'); 
    $mail->addAddress('[email protected]', 'Test Name'); 
    $mail->addAttachment('fileaddress'); 
    $mail->isHTML(true); 
    $mail->Subject = $subject; 
    $mail->Body = $message; 
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

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

?> 

попробуйте этот работа прекрасный .. !!

+0

спасибо, он отлично работает, но имя отправителя электронной почты не отображается в папке «Входящие», он показывает, что отправитель «Корневой пользователь», я попытался отредактировать такой код: $ name = $ _POST ['name']; $ email = $ _POST ['email']; но id не работал и не отправил почту –

+0

Я не получаю ни одного пользователя root в своем локальном хосте. –

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