Контактная форма GMX

Я пытаюсь создать простую контактную форму SMTP с помощью phpMailer для своей домашней страницы, но она не работает. Он должен пересылать информацию из полей «имя, почта, тема, сообщение» на мой почтовый ящик (в данном случае «имя, почта, тема, сообщение»). Поля ввода также называются «имя, почта, тема, сообщение» в моем html-коде.

Может ли кто-нибудь сказать мне, что я делаю неправильно? Спасибо за любой совет.

<?
  require('class.phpmailer.php');    
  require('class.smtp.php');

    $mail = new PHPMailer(); 
            $mail->CharSet  =  "utf-8";
            $mail->IsSMTP();
            $mail->Host       = 'mail.gmx.de';
            $mail->SMTPDebug  = 0;                     
            $mail->SMTPAuth   = true;           
            $mail->SMTPSecure = "ssl";                 
            $mail->Port       = 465;                     
            $mail->Mailer   = "ssl"; 
            $mail->Password = "****"; 
            $mail->Username = "[email protected]"; 
            $mail->SMTPAuth  =  "true"; 

            $mail->FromName = $_POST['name']; 

            $mail->AddAddress = $_POST['mail'];  

            $mail->Subject = $_POST['subject'];  

            $mail->Body = $_POST['message']; 

            if(!$mail->Send())   
            {  
            echo 'E-Mail not send.';  
            echo 'Mailer error: ' . $mail->ErrorInfo;  
            }   
            else   
            {  
            echo "<h5>" . 'Thanks for your message' . "</h5>";  
            }  
?>

person Timo S    schedule 01.03.2015    source источник
comment
Какую ошибку вы получаете?   -  person Ali Hamze    schedule 02.03.2015
comment
error: Вы должны указать хотя бы один адрес электронной почты получателя. Но я думал, что это часть кода, не так ли? $mail-›Имя пользователя = [email protected];   -  person Timo S    schedule 02.03.2015
comment
но это не работает - почему это не работает? Вы не указали, в чем проблема/была.   -  person jww    schedule 02.03.2015
comment
Вы основываете свой код на устаревшем примере, поэтому, вероятно, вы также используете старую версию PHPMailer. Получить последнюю версию.   -  person Synchro    schedule 02.03.2015


Ответы (1)


В сообщении об ошибке говорится, что вам не хватает адреса получателя, вы должны добавить его, используя:

$mail->AddAddress("[email protected]", "Your Name");
//Your Name is optional. so alternatively you could do:
//$mail->AddAddress("[email protected]");

Часть кода, на которую вы ссылаетесь $mail->Username = "[email protected]";, просто устанавливает имя пользователя для аутентификации на SMTP-сервере, а не адрес получателя.

person Ali Hamze    schedule 01.03.2015
comment
Большое спасибо! Теперь он работает нормально :-) Но у меня есть еще одна проблема. Моя контактная форма не сбрасывается, когда я нажимаю кнопку отправки. Вы знаете, как я могу решить эту проблему? Вот ссылка на мою контактную форму: k-urz.de/v8 - person Timo S; 02.03.2015
comment
Добавьте document.getElementById("contactform").reset(); к методу, который вы используете при отправке формы. - person Ali Hamze; 02.03.2015
comment
Это отлично работает для сброса контактной формы. Спасибо :) Но теперь я получаю пустое тело сообщения об ошибке, хотя я помещаю текст в это поле. Что происходит не так? - person Timo S; 02.03.2015
comment
Вероятно, вы сбрасываете форму перед отправкой. - person Ali Hamze; 02.03.2015
comment
Я использую функцию js в html-части моей кнопки отправки: <input class="submit three columns" type="submit" value="Submit" id="submit" onclick="resetform()"/> Как я могу отложить запуск этой функции? - person Timo S; 02.03.2015
comment
Вы бы поставили document.getElementById("contactform").reset(); в конце вашего метода отправки $('#submit').click(function(){ //code goes here }); - person Ali Hamze; 02.03.2015
comment
Большое спасибо! Решил проблему с помощью таймаута. Кому интересно: <div class="row"> <input class="submit three columns" type="submit" value="Submit" id="submit" OnClick="setTimeout('resetform()', 200); return true"/> </div> - person Timo S; 02.03.2015