HTML форма за контакт

veni8

Active Member
От интернет взех готова форма, но след като я изпробвах, излиза надпис: Съобщението не е изпратено!
Това са двата файла index.html и contact.php

HTML:
<html>

<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="content-language" content="bg, en">
</head>

<body>

<p>ФОРМА ЗА КОНТАКТ</p>
<form method="post" action="contact.php">
<p>Вашето име:</p>
<input type="text" name="name"/>
<p>Вашият e-mail:</p>
<input type="text" name="email"/>
<p>Вашето съобшение:</p>
<textarea name="msg" cols="50" rows="10"></textarea>
<input type="submit" name="sendmail" value="Изпрати"/>
</form>
    
</body>

</html>



PHP:
<?php

if(isset($_POST['sendmail'])){
  //Това проверява дали е пуснат пост за пращането на мейла
  $name = $_POST['name'];
  $email = $_POST['email'];
  $msg = $_POST['msg'];

  //Проверка дали е попълнено името
  if($name == ""){ echo "Трябва да попълните името!"; }

  //Проверка и за емейла
  elseif($email == ""){ echo "Трябва да попълните e-maila"; }

  //Проверка за съобщението
  elseif($msg == ""){ echo "Не сте написали съобщение"; }

  //Ако всичко е попълнено праща мейла
  else{
    $msg2 = "$name Ви е изпратил следното съобщение:\n\n$msg\n\nЗа контакти: $email";
    if(mail("моят_имейл@abv.bg", "Е-майл Форма", $msg2, "From: $email\r\nReply-to: $email\r\n")){
      echo "Съобщението е изпратено успешно!";
    }else{ echo "Съобщението не е изпратено!"; }
  }
}

?>
 
Задължително ли е да фейкваш From: в хедъра? Някои мейлсървъри имат защита срещу това и не приемат разпращания от външни адреси! Направи един тест, като вместо файлшивия From сложиш локален мейл, т.е. ако пращаш от veni8.com, нека мейлът бъде [email protected]. Виж и в PHP.ini дали всичко ти е наред със sendmail_path.
 
1. Провери ерор логовете дали има нещо вътре и ако има дай да го видим
2. Ако еррор логовете са празни пиши на съппорта на хостинга и сподели проблема за да проверят SMTP сървъра.
 
Задължително ли е да фейкваш From: в хедъра? Някои мейлсървъри имат защита срещу това и не приемат разпращания от външни адреси! Направи един тест, като вместо файлшивия From сложиш локален мейл, т.е. ако пращаш от veni8.com, нека мейлът бъде [email protected]. Виж и в PHP.ini дали всичко ти е наред със sendmail_path.

Направих си имейл към моя домейн. Изпращането на имейли веднага се оправи.

Обаче не работи кирилицата и имейлите пристигат на маймуница. Надписът "Съобщението е изпратено успешно!" също се вижда на маймуница.
 
Обаче не работи кирилицата и имейлите пристигат на маймуница. Надписът "Съобщението е изпратено успешно!" също се вижда на маймуница
"From: $email\r\nReply-to: $email\r\n"
Към това добавете
PHP:
"Content-Type: text/plain;charset=utf-8"
Целия снипет:

PHP:
<?php

if(isset($_POST['sendmail'])){
  //Това проверява дали е пуснат пост за пращането на мейла
  $name = $_POST['name'];
  $email = $_POST['email'];
  $msg = $_POST['msg'];

  //Проверка дали е попълнено името
  if($name == ""){ echo "Трябва да попълните името!"; }

  //Проверка и за емейла
  elseif($email == ""){ echo "Трябва да попълните e-maila"; }

  //Проверка за съобщението
  elseif($msg == ""){ echo "Не сте написали съобщение"; }

  //Ако всичко е попълнено праща мейла
  else{
    $msg2 = "$name Ви е изпратил следното съобщение:\n\n$msg\n\nЗа контакти: $email";
    if(mail("моят_имейл@abv.bg", "Е-майл Форма", $msg2, "From: $email\r\nReply-to: $email\r\nContent-Type: text/plain;charset=utf-8")){
      echo "Съобщението е изпратено успешно!";
    }else{ echo "Съобщението не е изпратено!"; }
  }
}

?>
 

Горе