Nie przychodzące wiadomości

0

Mam problem, otóż napisałem kod, który powinien wysyłać maila do użytkownika ale pomimo tego, że cała funkcja zwraca wartość true żadnego maila nie ma na skrzynce odbiorczej.
Strona postawiona jest na webd.pl i z tego co do nich pisałem bez problemu funkcja mail() powinna przejść. Wgrywałem chociażby phpMailer'a, smtpmailer i swiftmailer ale żaden z nich nie wysyłał maila do użytkownika dlatego z nich zrezygnowałem. Liczę na waszą pomoc bo już sam nie wiem gdzie szukać błędów.

<?php

if ($_POST['bt'] == "wyslij") { /* sprawdzam czy formularz został wysłany */
 if (($_POST['email'] != "") AND ($_POST['tytul'] != "") AND ($_POST['tresc'] != "")) { /* sprawzdam czy każde pole jest wypełnione */
   $send = mail("[email protected]",$_POST['tytul'],$_POST['tresc'],"From: Wiadomo¶ć ze strony <".$_POST['email'].">");
   if ($send) /* sprawdzam czy wiadomośc została wysłana */
    $message = "Wiadomość została wysłana...";
    else
     $message = "Widomość nie została wysłana, ponów próbę...";
 } else
    $message = "Nie wypełniono wszystkich pól...";
}

?>

<html>
<head>
<title>Wysyłanie widomości e-mail</title>
<meta http-equiv="content-type" content="text/xml; charset=iso-8859-2" />
<meta http-equiv="content-language" content="pl" />

</head>
<body>
<p><?php echo $message ?></p>
<form action="" method="post">
e-mail: <input type="text" name="email" /><br />
tytuł: <input type="text" name="tytul" /><br />
treść: <textarea name="tresc"></textarea><br />
<input type="submit" name="bt" value="wyslij" />
</form>
</body>
</html>

Tak samo prosta funkcja mail()

<?php
   if(mail('[email protected]', 'Witaj', 'Oto test funkcji mail'))
   {
      echo 'Wiadomość została wysłana';
   }
0

Sprawdzałeś folder Spam?

0
Patryk27 napisał(a):

Sprawdzałeś folder Spam?

Tak, kompletnie pusty.

1

Spróbuj to wrzucić na jakiś inny chociażby darmowy hosting. Sprwadź czy tam dzieje się to samo. Fajnie by było gdybyś dorzucił jeszcze kod od phpmailera, zauważ, że w swoim obecnym rozwiązaniu nie stosujesz żadnego sprawdzania czy nadawca emaila faktycznie istnieje. W phpmailerze spokojnie ustawiłbyś sobie smtp.

Wyobraż sobie, że powyższy kod jest wykorzystywany do wysyłania spamu. Google w żaden sposób nie może zweryfikować nadawcy - więc pewnie całkowicie wywala maila, możliwe, ze nawet nie podając zwrotki.

0

Zastanawiam się, czy to nie jest kwestia jakichś ustawień serwera.
Zgodnie z opisem pod adresem http://php.net/manual/en/function.mail.php funkcja mail() Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise. It is important to note that just because the mail was accepted for delivery, it does NOT mean the mail will actually reach the intended destination.. Czyli to Twoje TRUE nie oznacza, że mail został wysłany, a jedynie że PHP "przekazało" wiadomość dalej do wysłania.

Skoro pisałeś, że różne programy pocztowe nie działały, a do tego PHP przekazuje wiadomość poprawnie, zacząłbym śledztwo od sprawdzenia, jak działa na tym hostingu usługa serwera pocztowego.

0
axelbest napisał(a):

Spróbuj to wrzucić na jakiś inny chociażby darmowy hosting. Sprwadź czy tam dzieje się to samo. Fajnie by było gdybyś dorzucił jeszcze kod od phpmailera, zauważ, że w swoim obecnym rozwiązaniu nie stosujesz żadnego sprawdzania czy nadawca emaila faktycznie istnieje. W phpmailerze spokojnie ustawiłbyś sobie smtp.

Wyobraż sobie, że powyższy kod jest wykorzystywany do wysyłania spamu. Google w żaden sposób nie może zweryfikować nadawcy - więc pewnie całkowicie wywala maila, możliwe, ze nawet nie podając zwrotki.

No właśnie w tym problem, że próbowałem już nie tylko z mailem w serwisie google ale wp czy też onet. Za każdym razem to samo. Spróbuje jeszcze tak jak mówisz wykorzystać jakiś darmowy hosting i tam wrzucić ten kod. Co do phpmailera:

<?php
    require_once('class.phpmailer.php');    //dodanie klasy phpmailer
    require_once('class.smtp.php');    //dodanie klasy smtp
    $mail = new PHPMailer();    //utworzenie nowej klasy phpmailer
    $mail->From = "[email protected]";    //adres e-mail użyty do wysyłania wiadomości
    $mail->FromName = "Jan Nowak";    //imię i nazwisko lub nazwa użyta do wysyłania wiadomości
    $mail->AddReplyTo('[email protected]', 'mailing'); //adres e-mail nadawcy oraz jego nazwa
                                                 //w polu "Odpowiedz do"  
    $mail->Host = "smtp.wp.pl";    //adres serwera SMTP wysyłającego e-mail
    $mail->Mailer = "smtp";    //do wysłania zostanie użyty serwer SMTP
    $mail->SMTPAuth = true;    //włączenie autoryzacji do serwera SMTP
    $mail->Username = "[email protected]";    //nazwa użytkownika do skrzynki e-mail
    $mail->Password = "xxx";    //hasło użytkownika do skrzynki e-mail
    $mail->Port = 465; //port serwera SMTP zależny od konfiguracji dostawcy usługi poczty
    $mail->Subject = "temasddasdaat";    //Temat wiadomości, można stosować zmienne i znaczniki HTML
    $mail->Body = 'trasdasdeść';    //Treść wiadomości, można stosować zmienne i znaczniki HTML     
    $mail->AddAddress ("[email protected]","Biuro Webio");    //adres skrzynki e-mail oraz nazwa
                                                    //adresata, do którego trafi wiadomość
     if($mail->Send())    //sprawdzenie wysłania, jeśli wiadomość została pomyślnie wysłana
        {                      
        echo 'E-mail został wysłany'; //wyświetl ten komunikat
        }            
    else    //w przeciwnym wypadku
        {           
        echo 'E-mail nie mógł zostać wysłany<br />';    //wyświetl następujący
        echo 'Mailer Error: ' . $mail->ErrorInfo;
        }
  ?>  

Co prawda po wykonaniu tego kodu aktualnie mam błąd Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

0

Wydaje mi się, że w konfiguracji phpmailera jeszcze powinieneś uwzględnić szyfrowanie - https://pomoc.wp.pl/jak-skonfigurowac-program-pocztowy - tutaj masz opisane, ze wymagane jest SSL. To może być przyczyną błędu.

0

$mail->From - tak się zastanawiam, czy to może mieć jakiś związek. Teraz nie pamiętam dokładnie, ale coś mi świta, że jakaś niezgodność tego adresu z tym, który "wychodzi" z serwera może powodować odrzucenie wiadomości. Niestety, to było dawno temu i już mi konkrety wyleciały :(

0

Dobra, zmieniłem wartość w

$mail->Mailer = "smtp";

Na

$mail->Mailer = "ssl";

No i teraz jest komunikat, że wiadomość została wysłana bez żadnych błędów. Szkoda tylko, że już tak wcześniej miałem i to nadal nie wpłynęło na to, że mail do mnie nie doszedł

0

Być może musisz włączyć w opcjach konta google: Dostęp mniej bezpiecznych aplikacji, ew. spróbuj z inną skrzynką niż gmail.

0
czysteskarpety napisał(a):

Być może musisz włączyć w opcjach konta google: Dostęp mniej bezpiecznych aplikacji, ew. spróbuj z inną skrzynką niż gmail.

Właśnie zmieniłem poczte na wp bo tam zdecydowanie więcej spamu trafia więc jak już to tam będzie mój "wymarzony" mail :)

0

Coś chyba źle zmieniłeś, raczej tak powinno być

$mail->IsSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";///ooo to tu :)
$mail->Username = "[email protected]";
$mail->Password = "**********";
$mail->Port = "465";
0
axelbest napisał(a):

Coś chyba źle zmieniłeś, raczej tak powinno być

$mail->IsSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";///ooo to tu :)
$mail->Username = "[email protected]";
$mail->Password = "**********";
$mail->Port = "465";

Jak zmieniłem z ssl na smtp oraz dodałem Twoj kod znowu posypały się błędy :D Jaki ten php jest czasami cudowny.

2019-02-26 11:43:31 Connection: opening to ssl://smtp.wp.pl:465, timeout=300, options=array ()
2019-02-26 11:43:32 Connection failed. Error #2: stream_socket_client(): unable to connect to ssl://smtp.wp.pl:465 (Connection refused) [/home/xxx/public_html/xxx/class.smtp.php line 299]
2019-02-26 11:43:32 SMTP ERROR: Failed to connect to server: Connection refused (111)
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
E-mail nie mógł zostać wysłany
1

Całego mojego kodu nie trzeba było wrzucać - wystarczyło tylko tę linijkę z ssl'em :) a to jeszcze mam poradę - użyj phpmailerowego debuga $mail->SMTPDebug = 2;
oraz przeczytaj to - https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
`

0

z localhosta może ci nie wysłać, najpewniej z hostingu, część skrzynek blokuje stmp, najlepiej poczytać regulamin ew. spróbuj na początek normalnie po np. protokole sendmail

0

Jestem w kropce. Wiecie może za co odpowiada kod

$mail->Mailer = "x";

Gdy go zdeklaruje na dowolną wartość cały skrypt przechodzi z wynikiem pozytywnym natomiast maila nie ma. Gdy usunę tą linijkę dostaje błędy, które nie wiem jak rozwiązać...

<?php

header('Content-type: text/html; charset=utf-8');

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

require 'phpmailer/src/Exception.php';
require 'phpmailer/src/PHPMailer.php';
require 'phpmailer/src/SMTP.php';

$imie = 'Daniel';
$email = $_POST['webinsider-input-email'];
$tresc = 'tresc wiadomosci';
$temat = 'Temat';

date_default_timezone_set('Europe/Warsaw');

$mail = new PHPMailer(true);
try {
 $mail->isSMTP(); // Używamy SMTP
 $mail->Host = 'smtpwp.pl'; // Adres serwera SMTP
 $mail->SMTPAuth = true; // Autoryzacja (do) SMTP
 $mail->Username = "[email protected]"; // Nazwa użytkownika
 $mail->Password = "Haslo123!"; // Hasło
 $mail->SMTPSecure = 'SSL'; // Typ szyfrowania (TLS/SSL)
 $mail->Port = 465; // Port
 $mail->SMTPDebug = 10;
 // $mail->Mailer = "x";
 $mail->CharSet = "UTF-8";
 $mail->setLanguage('pl', '/phpmailer/language');
 $mail->setFrom('[email protected]', 'WebInsider.pl');
 $mail->addAddress('[email protected]', 'Patryk');
 //$mail->addReplyTo($email, $imie);

 $mail->isHTML(true); // Format: HTML
 $mail->Subject = $temat;
 $mail->Body = $tresc;
 $mail->AltBody = 'By wyświetlić wiadomość należy skorzystać z czytnika obsługującego wiadomości w formie HTML';

 $mail->send();
 // Gdy OK:
echo "<span style='color:red;'>Wysłano wiadomosc</span><br />";

} catch (Exception $e) {
 // Gdy błąd:
 echo "<span style='color:red;'>Wysyłanie wiadomości nie powiodło się</span><br />";
 echo $mail->ErrorInfo;
}

?>

Pomimo czytania całego artykułu na https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting dalej nie mam pomysłów na rozwiązanie.

2019-02-26 14:59:54 Connection: opening to smtpwp.pl:465, timeout=300, options=array()
2019-02-26 14:59:55 Connection failed. Error #2: stream_socket_client(): unable to connect to smtpwp.pl:465 (Connection refused) [/home/x/public_html/x.pl/phpmailer/src/SMTP.php line 327]
2019-02-26 14:59:55 SMTP ERROR: Failed to connect to server: Connection refused (111)
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Wysyłanie wiadomości nie powiodło się
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Tak samo jak sam stream_socket_client() odnosi się do linijki 327, którą jest zamknięcie ifa czego też nie pojmuje.

if ($streamok) {
            $socket_context = stream_context_create($options);
            set_error_handler([$this, 'errorHandler']);
            $this->smtp_conn = stream_socket_client(
                $host . ':' . $port,
                $errno,
                $errstr,
                $timeout,
                STREAM_CLIENT_CONNECT,
                $socket_context
            );  //to jest 327 linijka
            restore_error_handler();
        }
1

Spróbuj wdrożyć stąd: https://bootstrapious.com/p/how-to-build-a-working-bootstrap-contact-form
albo stąd czysty php: https://bootstraptemple.com/p/how-to-build-a-working-bootstrap-contact-form
lub: https://graygrids.com/php-and-ajax-based-contact-form-for-bootstrap-and-html5/
wiem, że działa, bo sam kiedyś próbowałem, w ogóle zobaczysz czy dochodzi, bo się katujesz, a to może być kwestia samem poczty.

2
$mail->Host = 'smtpwp.pl';

Huh? Co to za adres?

2

Do testowania maili polecam taki serwisik: https://debugmail.io

Prosta stronka, tworzysz konto, zakładasz projekt i dostajesz dane konfiguracyjne. Wstawiasz je w apce i powinno śmigać.

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