Formularz e-mail na stronie - nic nie dochodzi

Odpowiedz Nowy wątek
2019-09-12 21:32
0

Cześć Wszystkim. Próbuję dodać formularz kontaktowy na stronę i niby wszystko ok i wyświetla komunikat "Dzięki za kontakt" to mimo to nic nie dochodzi. Mógłby ktoś pomóc to poprawić. z góry bardzo Dziękuję.

index.php

<body>
<?php
if(isset($_POST["SubmitBtn"])){

$to = "[email protected]";
$subject = "Contact mail";
$from=$_POST["email"];
$msg=$_POST["msg"];
$headers = "From: $from";

mail($to,$subject,$msg,$headers);
echo "Dzięki za kontakt.";
}
?>
<form id="emailForm" name="emailForm" method="post" action="" >
<table width="100%" border="0" align="center" cellpadding="4" cellspacing="1">
<tr>
  <td colspan="2"><strong>Kontakt</strong></td>
</tr>
<tr>
  <td>E-mail :</td>
  <td><input name="email" type="text" id="email"></td>
</tr>
<tr>
  <td>Wiadomość :</td>
  <td>
  <textarea name="msg" cols="45" rows="5" id="msg"></textarea>
  </td>
</tr>
<tr>
  <td>&nbsp;</td>
  <td><input name="SubmitBtn" type="submit" id="SubmitBtn" value="Wyślij"></td>
</tr>
</table>
</form>
</body>

Tak jest na hosyingu. Lecz testując na xamppie mam komunikat:

Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\Testowy\E-mail\index.php on line 20
Dzięki za kontakt.

Linia 20:

mail($to,$subject,$msg,$headers);

Pozostało 580 znaków

2019-09-12 22:21
2

Przy Twoim obecnym kodzie wysyłasz maila za pomocą najprostszej funkcji mail, jak widzisz w kodzie - nie podajesz tam żadnych danych autoryzacyjnych (login hasło, serwer). W tym momencie pomyśl, co by było gdybym ja wysyłał takie wiadomości i wpisał tam Twój adres email oraz imię i nazwisko? Podszywalbym się pod Ciebie... A to prowadzi do wielu problemów, dlatego serwery (hostingi) nie akceptują przeważnie takiej funkcji, dlatego musisz podać dane do SMTP (simple mail transfer protocol o ile dobrze kojarzę) i tam podać dane do konta z którego te maile będa wysyłane (konto musi istnieć).

Poza tym polecam użyć biblioteki phpmailer, która załatwi za Ciebie wiele rzeczy i będzie przyjemniejsza w użyciu nawet co chodzi o korzystanie z SMTP /załączników itp itd. W internecie znajdziesz masę przykładów jak dokładnie użyć tej biblioteki, chociazby w dokumentacji od samej biblioteki.

edytowany 2x, ostatnio: axelbest, 2019-09-12 22:24

Pozostało 580 znaków

2019-09-12 22:29
2

To nawet nie o to chodzi, po prostu z local'a nie wyślesz maila (bez odpowiedniej konfiguracji xampp'a).


Pozostało 580 znaków

2019-09-12 22:32
0

Masz włączony moduł Mercury w Xamppie ? Jakieś inne aplikacje nie blokują portu np. outlook ?


Każdy programista przybywający z innego miasta jest fachowcem.

Pozostało 580 znaków

2019-09-14 11:35
0

Próbowałam coś zrobić ale idzie topornie o ile udało mi się użyć phpmailer (ver 6.1) i utworzyć pliki z pomocą composer o tyle dalej zaczynają się schody bo niby wszystko jest w necie wyjaśnione lecz potrzebuję bardziej łopatologicznie. Pytanie pierwsze $mail->addAddress czy tutaj podaje swój adres e-mail na który mają być kierowane wiadomości ze strony? Pytanie drugie jak poprawnie zapisać setFrom(''); by nadać id tak by dane od kogo przechwycić z formularza (elementu input). Chyba że w input jako id wpisuje setFroma tu pozostawiam taksetFrom(''); ? Trzecie pytanie : Czy jeszcze coś tu potrzebuje? O ile idę w dobrym kierunku Z góry dziękuję już siedzę trochę nad tym ale zakręciłam się maksa . Pozdrawiam

<?php 

use PHPMailer\PHPMailer\PHPMailer; 
use PHPMailer\PHPMailer\Exception; 

require vendor/autoload.php'; 

$mail = new PHPMailer(true); 

try { 
    $mail->SMTPDebug = 0;                                        
    $mail->isSMTP();                                             
    $mail->Host       = 'serwer1999.home.pl';                     
    $mail->SMTPAuth   = true;                              
    $mail->Username   = 'serwer1999';                  
    $mail->Password   = 'haslo';                         
    $mail->SMTPSecure = 'ssl';                               
    $mail->Port       = 465;   

    $mail->setFrom('f');            
    $mail->addAddress('[email protected], 'Aga'); 

    $mail->isHTML(true);                                   
    $mail->Subject = 'Subject'; 
    $mail->Body    = '';  
    $mail->send(); 
    echo "Dziękuję za kontakt"; 
} catch (Exception $e) { 
    echo "Coś poszło nie tak :( {$mail->ErrorInfo}"; 
} 

?> 

Pozostało 580 znaków

2019-09-14 11:46
0

W addAddress dajesz odbiorcę (to chyba powinno być w dokumentacji), jako username dla pewności podalbym Twój cały adres mailowy, w polu from (metoda set From) daj swój poprawny adres np tak Aga Mazur <[email protected]>.

Ww. Porady powinny pomoc. W razie czego ustaw wyższy poziom debugowania (smtpdebug na 1 lub 2 o ile dobrze pamiętam), to Ci wyjątku rzuci konkretne info.

[edit]
Ogólnie jeśli to formularz kontaktowy to w Set from ustaw np Formularz że strony... <[email protected]> nadawcę (dane kontaktowe typu email, imię nazwisko, telefon) wsadz w tresc maila np.
Email że strony...
Od:....
Telefon....
Wiadomowc....
W przypadku formularza kontaktowego w metodzie addAddress daj jednak swój adres

edytowany 2x, ostatnio: axelbest, 2019-09-14 12:00

Pozostało 580 znaków

2019-09-14 12:07
0

Tak jest to w dokumentacji masz rację może za dużo myślę i kombinuję, wydawało mi się że to ja jestem odbiorcą bo ktoś ze strony będzie pisał do mnie Podpowiedz mi proszę.Skoro wszystko daje w Set Form to jak tu pododawać id inny do od, inny od)e-mail) i inny id do samej treści wiadomości. Bo już się pogubiłam

edytowany 3x, ostatnio: Agniecha18, 2019-09-14 12:13
Tak. Masz rację będziesz odbiorca, dlatego zedytowalem posta :) - axelbest 2019-09-14 12:21

Pozostało 580 znaków

2019-09-14 12:23
0

To od kogo jest wiadomość podajesz w treści wiadomości. W mailu z formularza jako nadawcę masz sama siebie i jako odbiorcę. Ja np bardzo często zakładam sobie skrzynkę w danej domenie jako np [email protected] i wysyłam sobie na jakiś już określony prywatny czy służbowy adres. Natomiast to od kogo jest wiadomość pakuję do treści maila.

Pozostało 580 znaków

2019-09-14 12:33
0

Kup sobie jakiś hosting na sax.pl za dychę z subdomeną, lub na https://www.ct8.pl/ są jak widzę darmowe konta do założenia i warto brać do ćwiczeń.
Tam poćwicz online proste skrypty, zrób cokolwiek co działa.
Tutaj wrzucałem kontakty których sam kiedyś używałem i działają na pewno:
Skrypty do PHP


Pozostało 580 znaków

2019-09-14 21:27
0

Wybaczcie że Was męczę. Przerobiłam trochę kod i myślę że jestem coraz bliżej celu. Problem wydaje mi się że tkwi w konfiguracji PHP. Jak moglibyście się przyjrzeć i pomóc w konfiguracji . Niby wszystko dobrze a nie dostaje wysłanych wiadomości. Może też pocztę na którą mają przychodzić wiadomości muszę skonfigurować by takowe wiadomości otrzymywać ze strony?

Poniżej komunikat jaki mam po kliknięciu w wyśkij czy to testując lokalnie czy też na hostingu

Could not access file - to pojawia się jak nie dodam pliku w wiadomości. Dodając plik już tego nie ma i jest tylko to co poniżej:

2019-09-14 18:23:56 SERVER -> CLIENT: +OK localhost IdeaPop3Server 0.83.292 ready.
2019-09-14 18:23:56 CLIENT -> SERVER: EHLO 127.0.0.1

Poniżej dodatkowo na serwerze lokalnym pojawia się error, chodzi o time limit bo kręci po kliknięciu w Wyślij i kręci(około minuty)

Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\Testowy\mail\vendor\phpmailer\phpmailer\src\SMTP.php on line 1125

Fragment kodu jest na samym dole a cały PHPMailer wraz z SMTP.php w załączniku

Mam hosting na home pl i tam też do serwera utworzyłam konto pocztowe. Posiadam takie oto dane:

Serwery pocztowe
POP3
serwer1999676.home.pl  Port/SSL: 995
SMTP
serwer1999676.home.pl  Port/SSL: 465
IMAP
serwer1999676.home.pl  Port/SSL: 993

A oto kod PHP:
Jako port podałam 995 (POP3, port poczty przychodzącej bo mam odbierać na serwerze tak mi się wydaje)

<?php
use PHPMailer\PHPMailer\PHPMailer; 
use PHPMailer\PHPMailer\Exception; 

if(!empty($_POST["send"])) {
    require_once ('vendor/autoload.php');

    $mail = new PHPMailer();
    $mail->IsSMTP();
    $mail->SMTPDebug = 2;
    $mail->SMTPAuth = TRUE;

    $mail->Port = 995;

    $mail->Username = "serwer1999352";
    $mail->Password = "ufIVs7q1D5lbaUmw";

    $mail->Mailer = "smtp";

    if (isset($_POST["userEmail"])) {
        $userEmail = $_POST["userEmail"];
    }
    if (isset($_POST["userName"])) {
        $userName = $_POST["userName"];
    }
    if (isset($_POST["subject"])) {
        $subject = $_POST["subject"];
    }
    if (isset($_POST["userMessage"])) {
        $message = $_POST["userMessage"];
    }
    $mail->SetFrom($userEmail, $userName);
    $mail->AddReplyTo($userEmail, $userName);
    $mail->AddAddress("[email protected]"); 

    $mail->Subject = $subject;
    $mail->WordWrap = 80;
    $mail->MsgHTML($message);

    $mail->IsHTML(true);

    $mail->SMTPSecure = 'ssl';
    $mail->Host = 'serwer1999.home.pl';

    if (! empty($_FILES['attachment'])) {
        $count = count($_FILES['attachment']['name']);
        if ($count > 0) {

            for ($i = 0; $i < $count; $i ++) {
                if (! empty($_FILES["attachment"]["name"])) {

                    $tempFileName = $_FILES["attachment"]["tmp_name"][$i];
                    $fileName = $_FILES["attachment"]["name"][$i];
                    $mail->AddAttachment($tempFileName, $fileName);
                }
            }
        }
    }
    if (! $mail->Send()) {
        $message = "Ups :( Coś poszło nie tak";
        $type = "error";
    } else {
        $message = "Wiadomość Zosała wysłana pomyślnie";
        $type = "success";
    }
}

A o to fragment tego kodu: Linia 1125: if (!stream_select($selR, $selW, $selW, $this->Timelimit)) {

 $selR = [$this->smtp_conn];
        $selW = null;
        while (is_resource($this->smtp_conn) and !feof($this->smtp_conn)) {
            //Must pass vars in here as params are by reference
            if (!stream_select($selR, $selW, $selW, $this->Timelimit)) {
                $this->edebug(
                    'SMTP -> get_lines(): timed-out (' . $this->Timeout . ' sec)',
                    self::DEBUG_LOWLEVEL
                );

W załączniku podałam całą bibliotekę PHPMailer w tym plik vendor\phpmailer\phpmailer\src\SMTP.php

Usuń dane serwera, Konta i hasło. Wpisz jakieś xxx i potem zmień sobie jeszcze hasło w panelu.podawanie takich rzeczy publicznie może mieć nie miłe konsekwencje. - jurek1980 2019-09-14 22:17

Pozostało 580 znaków

2019-09-14 22:25
0

Podajesz port SMTP bo z taką usługą chcesz się komunikować. Według podanych informacji to 465. W "replay to" wpisz albo swój mail albo zostaw puste. Jak w kliencie poczty klikniesz "odpowiedz" to będzie użyty ten adres. Czyli ktoś odpowie sam do siebie.

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