2015-01-28 2 views
0

У меня есть контактная форма на моем сайте. Я хотел бы получать почту от посетителей по этой форме. Но странный мой код не работает. У меня есть часть валидации на моем сайте. Страница получает Refresh, но не получает почту. Может кто-нибудь помочь мне решить эту проблему.Невозможно отправить почту на моем сайте

Мой HTML код

<form novalidate name="contacto" method="post" action="" class="form_contacto" id="formContacto"> 
    <fieldset> 
               <label for="idEmpresa"> 
      <span>Company</span> 
      <input type="text" name="comp" id="idEmpresa" placeholder="Company" value=""> 
         </label> 

     <label for="idContacto"> 
      <span>Name and surname/s</span> 
      <input type="text" name="name" id="idContacto" placeholder="Name and surname/s" value=""> 
         </label> 

     <label for="idEmail"> 
      <span>E-mail</span> 
      <input type="email" name="email" id="idEmail" placeholder="E-mail" value=""> 
         </label> 

     <label for="idTelefono"> 
      <span>Telephone number</span> 
      <input type="tel" name="telephone" id="idTelefono" placeholder="Telephone number" value=""> 
         </label> 

     <label for="idConsulta"> 
      <span>Any remarks?</span> 
      <textarea name="message" id="idConsulta" rows="3" placeholder="Any remarks?"></textarea> 
         </label> 



    <input type="submit" class="send" name="form_contacto" value="send" > 

     <div class="clearfix"></div> 

     <input type="hidden" name="control" value="Este campo no debe rellenarse"> 
     <input type="hidden" name="id_content" value="12"> 
     <input type="hidden" name="h1" value="Contact"> 
     <input type="hidden" name="lang" value="en"> 
     <input type="hidden" name="redir" value="/en/contact/"> 
     <input type="hidden" name="plantilla" value="contacto"> 
     <input type="hidden" name="referer" value=""> 

    </fieldset> 

</form> 

Мой PHP код

<?php 
$msg=""; 
if(isset($_POST['form_contacto'])) 
{ 
print_r($_POST['form_contacto']); 

$comp=$_POST['name']; 
$name=$_POST['name']; 
$email=$_POST['email']; 
$phone=$_POST['telephone']; 

$detail=$_POST['message']; 

require("class.phpmailer.php"); // path to the PHPMailer class 

$mail = new PHPMailer(); 

$mail->IsSMTP(); // telling the class to use SMTP 
$mail->Mailer = "smtp"; 
$mail->Host = "ssl://smtp.gmail.com"; 
$mail->Port = 465; 
$mail->SMTPAuth = true; // turn on SMTP authentication 
$mail->Username = "[email protected]"; // SMTP username 
$mail->Password = "sunnight"; // SMTP password 

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

$mail->Subject = "quote from $email"; 
$mail->Body  = "$detail"; 
$mail->WordWrap = 50; 


if(!$mail->Send()) { 


echo 'Mailer error: ' . $mail->ErrorInfo; 
} 
$msg="<p style=\"color:#99CC00; font-size:13px;\">your registration was Successfull!.</p>"; 

} 
?> 
+0

Вы пробовали некоторые стандартные письма с вашим вебпространством? Вы проверили, что ваш хостер позволяет отправлять почту с помощью php? –

+0

мой хостинг-машина позволяет использовать php mailer..i внедрил его на моих старых страницах ... – Sheik

+0

Попробуйте 'print_r ($ _ POST []);', что он возвращает? –

ответ

0

У вас есть незначительные ошибки в коде.

В теге формы имя «contacto» и в теге submit его «form_contacto». Поэтому дайте им одно и то же имя, и это сработает, я думаю.

Приветствия

0

Вы должны переместить префикс соединения от хоста SMTPSecure.

В вашем случае:

$mail->SMTPSecure = "ssl"; 
$mail->Host = "smtp.gmail.com"; 

Have Посмотрите на этот пример: http://phpmailer.worxware.com/?pg=examplebgmail (не следует путать, они используют TLS вместо SSL, но и работает с Gmail)

+0

Нет. Это допустимый синтаксис в PHPMailer. – Synchro

+0

Это тоже устаревшая ссылка. PHPMailer не поддерживается на worxware уже много лет. – Synchro

0

Эта ошибка очень тщательно покрыты in the docs. Вы используете старую версию PHPMailer и основываете свой код на старом примере. Я предлагаю вам начать работу с обновленной версии, в частности this one.

Не указывайте адрес From, который будет адресом электронной почты человека, представляющего форму - он не сможет отправить, если вы используете gmail или yahoo (и другие) и, вероятно, будет отклонен в другом месте для любого домена, который правильно настроил SPF. Сделайте это вместо того, чтобы:

$mail->setFrom('[email protected]'); //Use your own gmail address 
$mail->addReplyTo($email); 

Синтаксис вы использовали для значения Host действует (хотя SSL порт 465 устарел за 15 лет!). Вы можете установить значения для Host, SMTPSecure и Port свойств все на одном дыхании, как это:

$mail->Host = 'tls://smtp.gmail.com:587'; 
Смежные вопросы