Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z wysyłaniem maili.
Forum PHP.pl > Forum > Przedszkole
Lesiak
Witam. Na początek warto spomnieć, że w PHP jestem początkujący. Moja dotychczasowa wiedza oparta jest na znajomości: operatorów, zmiennych, stałych, tablicy GET I POST, IF, else, elseif, Switch...

Dziś stworzyłem mój 3 skrypt, który... działa poprawnie na hostingu xaa.pl
  1. <?php
  2. $do = $_POST['email'];
  3. $temat = $_POST['temat'];
  4. $wiadomosc = $_POST['tresc'];
  5. $od = $_POST['od'];
  6. $nick = $_POST['nick'];
  7. mail($do,$temat,$wiadomosc,$od,$nick);
  8. echo "Mail zostal wyslany.";
  9. ?>


i...
  1. <form method="post" action="wyslij.php">
  2. E-mail ofiary: <br> <input type="text"
  3. name="email" />
  4. <br>
  5. Twoj zmyslony E-mail: <br> <input type="text"
  6. name="od" />
  7. <br>
  8. Temat: <br> <input type="text"
  9. name="temat" />
  10. <br>
  11. Nick: <br> <input type="text"
  12. name="nick" />
  13. <br>
  14. Tresc: <br> <textarea name="tresc" cols="10" rows="10">Zmaz to i wpisz swoja tresc...</textarea>
  15. <input type="submit" value="Wyslij" />
  16. </form>


W tym problem, że niezadawala mnie działanie tego skryptu. To znaczy, gdy wysyłam fakemaila, to dochodzi mi na pocztę, ale w OD podaje mój adres loginu z XAA.PL. Próbowałem zmienić hosting i tak zroibiłem, przenosząc się na YOYO.PL, lecz tam, gdy wysyłam skrypt, nie dochodzi do mojej skrzynki... więc tu pytanie: czy to wina skryptu, czy hostingu?
-jarek-
Skryptu.
Zobacz też czy serwer nie jest na platformie win. bo jak mnie pamięć nie myli to był jakiś problem z tą Windą.

  1.  
  2.  
  3. $host = $_SERVER['HTTP_HOST'];//pobiera host
  4. @mail("$email", "$host - Wiadomość od $imie_nazwisko", " $wiadomosc ", "Content-type: text; charset=iso-8859-2\r\nFrom:$email_nadawcy","-fnadawca@$SERVER_NAME");
  5. }


prosty przykład użycia.
Lesiak
Jest na linuxie ;]

Jeżeli to wina skryptu, to co w nim jest źle? Nie proszę o napisanie gotowca, bo to nie miałoby sensu, tylko lekkie nakierowanie mnie na właściwą drogę smile.gif
tolomei
Witam.

Zanim zadajemy pytanie sprawdzamy manual.
Nikt ani nic Cię lepiej nie "nakieruje".

mail()
W drugim przykładzie od góry znajdziesz odpowiedź.
Lesiak
Nic mi manuel nie mówi ;/

Mój skrypt wygląda tak:
  1. <?php
  2. $do = $_POST['email'];
  3. $temat = $_POST['temat'];
  4. $wiadomosc = $_POST['tresc'];
  5. $od = $_POST['od'];
  6. $host = $_SERVER['nick'];
  7. @mail("$do", "$host - Wiadomość od $od", " $wiadomosc ", "Content-type: text; charset=iso-8859-2\r\nFrom:$od","-$nick@$od");
  8. echo "Mail zostal wyslany.";
  9. ?>


nie wyświetla błędnego komunikatu, ale nie dociera email na pocztę. Co znowu źle robię? Podejrzewam, że coś z $host = $_SERVER['nick'].

Coś próbowałem z bool mail ( string $do , string $temat , string $treść [, string $dodatkowe_nagłówki [, string $dodatkowe_parametry ]] ), ale nie bardzo mi wychodziło.
Ociu
Wywal ten @ przez mail() i pokaż co wypisało na ekranie.


Przenoszę do przedszkola.
hondek
Bo może manuel nie znam manuala?biggrin.gif
Lesiak
Nie wyświetla żadnego błędu, jednak mail nie dochodzi :/ Co w tym skrypcie jest znowu nie tak?

Pomoże ktoś?
CuteOne
A manuel włączył raportowanie błędów?

ps. a próbowałeś wysłać prostego maila??
  1. <?php
  2.  
  3. $message = "dsfdsfdsf dsfdsfsdf";
  4.  
  5. try {
  6.  
  7. mail('email_odbiorcy@domena.com', 'Tytuł', $message);
  8. }
  9. catch(Exception $e) { echo $e->getMessage(); }
  10. ?>
Lesiak
Dochodzi email, ale nie do końca jestem z tego zadowolony.
Chciałbym, by to przesłało info z formularza. Trochę edytowałem:
  1. <?php
  2.  
  3. $message = $_POST['email'];
  4.  
  5. try {
  6.  
  7. mail($_POST['od'], $_POST['temat'], $message);
  8. }
  9. catch(Exception $e) { echo $e->getMessage(); }
  10. ?>]


Nie wyświetla błedów. (wcześniej wyświetlało, to usunąłem znaczniki ' ') teraz nic nie wyświetla, ale email nie dochodzi.

Trochę edytnąłem i końcowo skrypt wygląda tak:
  1. <?php
  2.  
  3. $message = $_POST['email'];
  4. $od = $_POST['od'];
  5. $temat = $_POST['temat'];
  6. $naglowek = $_POST['nick'];
  7.  
  8.  
  9. try {
  10.  
  11. mail($message, $od, $temat, $naglowek);
  12. }
  13. catch(Exception $e) { echo $e->getMessage(); }
  14. ?>


Mail dochodzi i co dziwne, jako TEMAT wyświetla EMAIL, który wpisałem do formularza, w OD jest adres serwera XAA.PL.
LewyM1
Wystarczy poprzestawiać zmienne. Czytałeś manuala?
tolomei
Lesiak kolego...
Czytaj co ludzie do Ciebie piszą proszę.

Napisałem, że jest w manualu, w drugim przykładzie od góry.
A więc widzimy tam:

  1. <?php
  2. $to = 'nobody@example.com';
  3. $subject = 'the subject';
  4. $message = 'hello';
  5. $headers = 'From: webmaster@example.com' . "\r\n" .
  6. 'Reply-To: webmaster@example.com' . "\r\n" .
  7. 'X-Mailer: PHP/' . phpversion();
  8.  
  9. mail($to, $subject, $message, $headers);
  10. ?>


Czy widzisz jak zbudowane są nagłówki ?

Troszkę zmodyfikuję :

  1. <?php
  2. if(isset($_POST['email'])) {
  3. $email = $_POST['email'];
  4. $od = $_POST['od'];
  5. $temat = $_POST['temat'];
  6. $nick = $_POST['nick'];
  7. $tresc = $_POST['tresc'];
  8. // pamietaj o walidacji
  9.  
  10. $headers = 'From: '.$nick."\r\n" .
  11. 'Reply-To: '.$od;
  12.  
  13. if(mail($email, $temat, $tresc, $headers)) {
  14. echo 'Wiadomosc wyslana poprawnie.';
  15. } else {
  16. echo 'Wiadomosc nie zostala wyslana.';
  17. }
  18. }
  19. ?>


To, że odsyłam Cię do manuala to nie znaczy, że chcę Cię wysłać na drzewo.

Wystarczy chcieć.

Pozdro.
Lesiak
Dzięki, działa. Po prostu byłem zmęczony i źle popatrzyłem na manual. Ja patrzyłem nie na przykłady, tylko na treść od góry, stąd nic nie rozumiałem. Następnym razem będę wiedział, dzięki za pomoc.
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.