Formularz kontaktowy nie działa

Odpowiedz Nowy wątek
2013-11-16 12:53
0

Formularz nie działa, robiony na przykładzie z neta. Proszę o pomoc.

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

    // EDIT THE 2 LINES BELOW AS REQUIRED
    $email_to = "...";
    $email_subject = "Kontakt z ...";

    function died($error) {
        // your error code can go here
        echo "Niestety napotkano problemy podczas wysyłania. ";
        echo "Dokładniej:<br /><br />";
        echo $error."<br /><br />";
        echo "Aby wysłać, należy poprawić błędy.<br /><br />";
        die();
    }

    // validation expected data exists
    if(!isset($_POST['name']) ||
        !isset($_POST['mail']) ||
        !isset($_POST['subject']) ||
        !isset($_POST['message'])) {
        died('Formularz nie został poprawnie wypełniony.');       
    }

    $first_name = $_POST['name']; // required
    $email_from = $_POST['mail']; // required
    $subject = $_POST['subject']; // not required
    $message = $_POST['message']; // required

    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  if(!preg_match($email_exp,$email_from)) {
    $error_message .= 'Niepoprawny adres email.<br />';
  }
    $string_exp = "/^[A-Za-z .'-]+$/";
  if(!preg_match($string_exp,$first_name)) {
    $error_message .= 'Niepoprawne imię.<br />';
  }
  if(strlen($message) < 2) {
    $error_message .= 'Za krótka wiadomość.<br />';
  }
  if(strlen($error_message) > 0) {
    died($error_message);
  }
    $email_message = "Szczegóły wiadomości.\n\n";

    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }

    $email_message .= "Name: ".clean_string($first_name)."\n";
    $email_message .= "Email: ".clean_string($email_from)."\n";
    $email_message .= "Subject: ".clean_string($subject)."\n";
    $email_message .= "Message: ".clean_string($message)."\n";

// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  
?>

<!-- include your own success html here -->

Dziękuję za kontakt. Odpowiem jak najszybciej.

<?php
}
?> 

Interesuje mnie ostatnich kilka linijek. Błędu nie ma, maila nie wysyła.

edytowany 1x, ostatnio: dzek69, 2013-11-16 14:34

Pozostało 580 znaków

2013-11-16 13:09
0

Prawdopodobnie masz nie skonfigurowany smtp w php dla mail'a
użyj jakiegoś innego ciekawego rozwiązania np http://phpmailer.worxware.com/index.php?pg=examplebsmtp

Pozostało 580 znaków

2013-11-16 13:26
0

To na stronie hostingowanej na ugu.pl. Tam znalazlem informacje, że z powodu filtrów nadawcą może być tylko email założony u nich. Założyłem tam email i ustawiłem go jako nadawcę ale nic to nie dało.
Dodałem zmienną z adresem tego maila co założyłem i podmieniłem w tym miejscu

$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .

Pozostało 580 znaków

2013-11-16 13:33
1

Zrób tak jak napisałem, prościej i na 100% będzie działać na każdym hostingu.

Pozostało 580 znaków

2013-11-16 14:34
0

Ja również mówię - skorzystaj z phpMailera, a nie funkcji mail, która jest niewiarygodna, bo mocno zależy od środowiska i przypadki "nie zwraca błędu a nie działa" liczebnością prawie doganiają zaludnienie planety Ziemia.


Pozostało 580 znaków

2013-11-16 15:11
0
<?php

require("phpmailer/class.phpmailer.php"); 
$mail = new PHPMailer(); 

    $first_name = $_POST['name']; // required
    $email_from = $_POST['mail']; // required
    $subject = $_POST['subject']; // not required
    $message = $_POST['message']; // required

$mail->PluginDir = "phpmailer/"; 
$mail->From = ".."; //adres naszego konta 
$mail->FromName = "From ..";//nagBówek From 
$mail->Host = "mail.ugu.pl";//adres serwera SMTP 
$mail->Port = 587;
$mail->Mailer = "smtp"; 
$mail->Username = "..";//nazwa u|ytkownika 
$mail->Password = "...";//nasze hasBo do konta SMTP 
$mail->SMTPAuth = true; 
$mail->SetLanguage("en", "phpmailer/language/"); 

$mail->Subject = $subject;//temat maila 

// w zmienn $text_body wpisujemy tre[ maila 
$text_body = $mail_form.'\n';
$text_body .= $name.'\n\n'; 
$text_body .= $message; 

$mail->Body = $text_body; 
// adresatów dodajemy poprzez metode 'AddAddress' 
$mail->AddAddress("mojEmail","Ja"); 

if(!$mail->Send()) 
echo "There has been a mail error <br>"; 
echo $mail->ErrorInfo."<br>"; 

// Clear all addresses and attachments 
$mail->ClearAddresses(); 
$mail->ClearAttachments(); 
echo "mail sent <br>"; 
?>

stmp connect() fail.... nie wiem czy blokuja czy co, na stmp z interii tez nie da rady.

Pozostało 580 znaków

2013-11-16 15:15
0

może zmień hosting na jakiś normalny? te "trzy literkowe" polskie hostingi to jest jakaś porażka.
jeżeli konfiguracja jest ok, to hosting musi coś blokować.

http://www.free-webhosts.com/webhosting-01.php

poczytaj, o każdym z nich masz "review"


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0