Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Funkcja mail() nie dostarcza niektórych wiadomości
Forum PHP.pl > Forum > Przedszkole
Cya
Mam przedziwny problem... Na stronie potrzebowałam formularza, więc wyszukałam w internecie jak najbardziej wiarygodny (znaczy taki z dużą ilością dobrych opinii, bo na PHP nie znam się prawie wcale, jestem na etapie zmiennych...), który wygląda tak:

  1. <?php
  2.  
  3. $do="Kidblack <kidblack@interia.pl>".",";$do.="Garcinda <garcinda@interia.eu>";
  4.  
  5. if (empty($_POST['submit0512092'])) {
  6.  
  7. echo "<table border=\"0\"><form method=\"post\"><tr><td>Treść wiadomości</td><td><textarea name=\"tresc0512092\" style=\"width: 250px; height: 100px\"></textarea></td></tr><tr><td>Imię i nazwisko</td><td><input type=\"text\" name=\"imie0512092\" style=\"width: 250px\"></td></tr><tr><td>Adres e-mail</td><td><input type=\"text\" name=\"email0512092\" style=\"width: 250px\"></td></tr><tr><td> </td><td><input type=\"submit\" name=\"submit0512092\" value=\"Wyślij\"> </td></form></tr></table>"
  8. ;}
  9.  
  10. elseif (!empty($_POST['tresc0512092']) && !empty($_POST['imie0512092']) && !empty($_POST['email0512092'])) {
  11.  
  12. $message = "Indeks imprezy: 0512092\nTresć wiadomosci:\n$_POST[tresc0512092]\n\nWiadomosć od: $_POST[imie0512092]\nE-mail: $_POST[email0512092]";
  13.  
  14. $header = "From: $_POST[imie0512092] <$_POST[email0512092]>";@mail($do,"Wiadomosc ze strony","$message","$header")or die('Nie udało się dodać komentarza.');
  15.  
  16. echo "<span style=\"color: #000000\">Komentarz został dodany. Będzie dostępny zaraz po moderacji.</span><br><br>
  17.  
  18. <table border=\"0\"><form method=\"post\"><tr><td>Treść wiadomości</td><td><textarea name=\"tresc0512092\" style=\"width: 250px; height: 100px\"></textarea></td></tr><tr><td>Imię i nazwisko</td><td><input type=\"text\" name=\"imie0512092\" style=\"width: 250px\"></td></tr><tr><td>Adres e-mail</td><td><input type=\"text\" name=\"email0512092\" style=\"width: 250px\"></td></tr><tr><td> </td><td><input type=\"submit\" name=\"submit0512092\" value=\"Wyślij\"> </td></form></tr></table>"
  19. ;}
  20.  
  21. else echo "<span style=\"color: #000000\">Wypełnij wszystkie pola formularza!</span><br><br>
  22.  
  23. <table border=\"0\"><form method=\"post\"><tr><td>Treść wiadomości</td><td><textarea name=\"tresc0512092\" style=\"width: 250px; height: 100px\"></textarea></td></tr><tr><td>Imię i nazwisko</td><td><input type=\"text\" name=\"imie0512092\" style=\"width: 250px\"></td></tr><tr><td>Adres e-mail</td><td><input type=\"text\" name=\"email0512092\" style=\"width: 250px\"></td></tr><tr><td> </td><td><input type=\"submit\" name=\"submit0512092\" value=\"Wyślij\"> </td></form></tr></table>"
  24. ;
  25.  
  26. ?>



Problemem jest to, że formularz wysyła tylko niektóre wiadomości, nie wiem, na jakiej zasadzie je wybierając. Wiadomości ode mnie dochodzą, prosiłam też kilka innych osób, by wysłały test i ich wiadomości też doszły. A tymczasem inni skarżą się, ze ich nie dochodzą. Czego to jest wina? Kodu? Bardzo bym prosiła o jakąś małą pomoc, bo dostaję już tu białej gorączki. Jeśli ktoś ma jakiś lepszy gotowiec, też chętnie zobaczę...
athei
Cytat
Wiadomości ode mnie dochodzą, prosiłam też kilka innych osób, by wysłały test i ich wiadomości też doszły. A tymczasem inni skarżą się, ze ich nie dochodzą.
Może filtr antyspamowy blokuje adres mailowy z którego wysyłana jest wiadomość, może maile lądują w spamie?
Cya
Niestety, ustawiałam już filtr spamu na najniższą czułość, jaka jest możliwa, przeglądałam też folder SPAM, a wiadomości kierowałam na kilka różnych adresów e-mail. Więc raczej niemożliwe, by była to wina skrzynki...
Pilsener
Bo to nie wina skrzynki, wysyłając mail funkcją mail zawsze narażasz się na to, że część maili zostanie sklasyfikowana jako spam i nie masz na to wpływu, nawet jak różnicujesz nagłówki, treść, rozkładasz wysyłkę w czasie to pozostaje jeszcze IP, po którym filtry antyspamowe mogą blokować niektóre serwery, oferując usługę typu "poczta za reklamę" nie chciałabyś chyba, żeby zamiast Twoich reklam użytkownicy czytali te wysyłane z Honolulu?

Polecam klasę phpmailer i użycie standardowego serwera SMTP (może być darmowy lub dedykowany, z oddzielnym IP), dzięki temu możemy wysyłać maile z różnych skrzynek uniezależniając się od funkcji mail na naszym hostingu, możesz też skasować @ przed nazwą funkcji mail i zobaczyć, jakie błędy wywala podczas wysyłania.
Cya
Pilsener, wreszcie jakaś konkretna odpowiedź, dzięki... Ale muszę przyznać, ze jestem na to i tak za głupia.
Znalazłam tę klasę phpmailer i to wygląda samo z siebie prosto, ale dręczy mnie to SMTP, z którego opisu w necie nie mogę nic wyciągnąć. Gdzieś było napisane: "Do działania klasy potrzebne nam będzie zewnętrzne konto email-owe z dostępem przez SMTP." i przyznam, że nie mam pojęcia, czego ode mnie tu chcą. Jeśli mógłbyś mi to jakoś łopatologicznie wyjaśnić, byłabym bardzo wdzięczna, bo nawet nie wiem, jak się do tego zabrać i co mam zrobić.
Mam tylko pytanie (być może głupie), czy klasa phpmailer pozwala na wysłanie wiadomości, gdy komputer nie ma zdefiniowanego programu pocztowego? Bo po opisie na jednej ze stron nabrałam niepewności.
A po skasowaniu "@" przy "mail" wiadomość i tak została wysłana. O.o Jak mam coś takiego rozumieć...?
Pilsener
@ to operator tłumienia błędów, jeśli funkcja mail zwróci jakiś komunikat błędu to bez tego operatora zobaczymy ten komunikat (jeśli oczywiście błąd wystąpił) i będzie mogli wyciągnąć jakieś wnioski smile.gif

A dostęp do serwera poczty przez SMTP to nic innego jak założenie np. poczty na wp i skonfigurowanie outlooka (lub innego programu tego typu):
http://poczta.wp.pl/autoryzacja/czytnik.html?cz=oe

Masz tam serwer poczty wychodzącej, przychodzącej, login, hasło etc winksmiley.jpg

Klasa phpmailer to taki outlook expres można powiedzieć winksmiley.jpg

Oczywiście nie musisz się ograniczać do darmowego serwera poczty, gdzie na pewno są ograniczenia odnośnie liczby wysłanych maili czy ich rozmiaru, dziś z tego co się orientuję prawie każdy hosting daje też serwer pocztowy z możliwością założenia iluś tam kont czy adresów mailowych.
Cya
Ach, to rozumiem. Faktycznie wyświetlił błąd.
Z kolei tego drugiego nie rozumiem. Bo czy to nie znaczy, że każdy, kto chce wysłać wiadomość poprzez formularz na stronie, musi mieć skonfigurowanego outlooka? A chciałam uniknąć tego, bo część osób, które wchodzą na stronę nie mają nawet swojego maila, a co mówić o skrzynce...
Pilsener
Nie, wysyłka maila idzie z TWOJEGO konta pocztowego, z którym możesz się łączyć przy pomocy outlooka, skrzynki Bugiego albo phpmailera. Podałem tylko outlooka jako przykład jak się konfiguruje połączenie z serwerem poczty, phpmailer jest tylko klientem napisanym w PHP dla środowiska www, za pomocą którego obsłużysz swój serwer poczty.
Cya
Chwila, czy ja dobrze rozumiem? Phpmailer jest jak tak wirtualny Outlook, którym różne osoby, używające formularza wysyłają do mnie wiadomości, tak, jakby to robiły z programu pocztowego...?
Czy transfer danych z użyciem czegoś takiego nie jest dość wysoki?
thek
To ja to wytłumaczę inaczej... Serwer SMTP jest "pośrednikiem" między Tobą a Twoimi klientami. Piszesz maila i wysyłasz go funkcją mail czy jakąś inną. Użycie SMTP na serwerze jest dla Ciebie niewidoczne jeśli używasz zwykłej funkcji mail(). Domyślnie bowiem przy wysyłce używa on SMTP serwera, na którym stoi Twoja strona (o ile serwis go posiada lub nie zablokował). Używając klasy PhpMailer skrypt prosi Cię jawnie o te dane.
Dlatego napisano "wirtualny Outlook". W nim też musisz te dane podać przy tworzeniu konta pocztowego. Chyba pamiętasz, że wtedy prosi Cię o adresy serwera POP3 i SMTP (lub IMAP) ?
Tu jest identycznie. Maile wtedy zamiast iść przez serwer SMTP, Twojej strony, są wysyłane poprzez serwer SMTP, który podałaś podczas konfiguracji.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.