Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Problem z funkcją MAIL, invalid recipient
Musashi
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 19.11.2004
Skąd: Witnica, lubuskie

Ostrzeżenie: (0%)
-----


Witam.
Przerabiam książkę "Dynamiczne strony WWW php i MySQL" z Heliona i utknąłem pod koniec 3-ciego rozdziału.
Mam skrypt:
  1. <?php # Skrypt 3.15 - rejestracja.php
  2.  
  3. if (isset($_POST['submit'])) { // Obsluż formularz.
  4.  
  5. $message = NULL; // Utworz nową, pustą zmienną.
  6.  
  7. // Sprawdź nazwisko.
  8. if (strlen($_POST['name']) > 0) {
  9. $name = TRUE;
  10. } else {
  11. $name = FALSE;
  12. $message .= '<p>Zapomniałeś podać swoje nazwisko!</p>';
  13. }
  14.  
  15. // Sprawdź adres e-mail.
  16. if (strlen($_POST['email']) > 0) {
  17. $email = TRUE;
  18. } else {
  19. $email = FALSE;
  20. $message .= '<p>Zapomniałeś podać swój adres e-mail!</p>';
  21. }
  22.  
  23. // Sprawdź nazwę użytkownika.
  24. if (strlen($_POST['username']) > 0) {
  25. $username = TRUE;
  26. } else {
  27. $username = FALSE;
  28. $message .= '<p>Zapomniałeś wprowadzić nazwę użytkownika!</p>';
  29. }
  30.  
  31. // Sprawdź czy użytkownik wprowadził hasło i czy w obu polach jest ono takie samo.
  32. if (strlen($_POST['password1']) > 0) {
  33. if ($_POST['password1'] == $_POST['password2']) {
  34. $password = TRUE;
  35. } else {
  36. $password = FALSE;
  37. $message .= '<p>Za drugim razem wpisałeś inne hasło!</p>';
  38. }
  39. } else {
  40. $password = FALSE;
  41. $message .= '<p>Zapomniałeś wprowadzić hasło!</p>';
  42. }
  43.  
  44. if ($name && $email && $username && $password) { // Jezeli wszystko jest OK.
  45. // Zarejestruj uzytkownika.
  46.  
  47. // Wyslij maila.
  48. $body = "Dziękujemy za zarejestrowanie się na naszej stronie!nTwoja nazwa użytkownik
    a to '{$_POST['username']}' a Twoje hasło to '{$_POST['password1']}'.nnZ poważaniem,nMy"
    ;
  49. mail ($_POST['email'], 'Dziekujemy za zarejestrowanie sie!', $body, 'From: admin@localhost');
  50. header ('Location: dziekujemy.php');
  51. exit();
  52. } else {
  53. $message .= '<p>Wróć do formularza i spróbuj jeszcze raz.</p>';
  54. }
  55.  
  56. }
  57.  
  58. // Ustaw tytul strony i naglowek HTML.
  59. $page_title = 'Zarejestruj się!';
  60. include ('./naglowek.inc');
  61.  
  62. // Jezeli jest jakis komunikat o bledzie, wyswietl go na stronie
  63. if (isset($message)) {
  64. echo '<font color="red">', $message, '</font>';
  65. }
  66. ?>
  67.  
  68. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  69. <fieldset><legend>Wprowadź do poniższego formularza informacje na swój temat:</legend>
  70.  
  71. <p><b>Nazwisko:</b> <input type="text" name="name" size="20" maxlength="40" value="<?php if (isset($_POST['name'])) echo $_POST['name']; ?>" /></p>
  72.  
  73. <p><b>Adres e-mail:</b> <input type="text" name="email" size="40" maxlength="60" value="<?php if (isset($_POST['email'])) echo $_POST['email']; ?>" /> </p>
  74.  
  75. <p><b>Nazwa użytkownika:</b> <input type="text" name="username" size="20" maxlength="40" value="<?php if (isset($_POST['username'])) echo $_POST['username']; ?>" /></p>
  76.  
  77. <p><b>Hasło:</b> <input type="password" name="password1" size="20" maxlength="40" /></p>
  78.  
  79. <p><b>Potwierdź hasło:</b> <input type="password" name="password2" size="20" maxlength="40" /></p>
  80. </fieldset>
  81.  
  82. <div align="center"><input type="submit" name="submit" value="Wyślij dane" /></div>
  83.  
  84. </form><!-- Koniec formularza -->
  85.  
  86. <?php
  87. include ('./stopka.inc'); // Dołącz stopkę HTML.
  88. ?>


Po wypełnieniu danych we formularzu i próbie wysłania otrzymuję następujący błąd:
Kod
Warning: mail() [function.mail]: SMTP server response: 550 Invalid recipient: mail@onet.pl in c:\usr\krasnal\www\dyn\rejestracja.php on line 49

Warning: Cannot modify header information - headers already sent by (output started at c:\usr\krasnal\www\dyn\rejestracja.php:49) in c:\usr\krasnal\www\dyn\rejestracja.php on line 50


Skrypt dokładnie sprawdziłem i jest taki sam jak w książce. Poza tym znalazłem przykłady do tej książki na serwerze Heliona i wkleiłem oryginalny. Ciągle taki sam błąd.
W opisie skryptu autor książki podał informację, że w przypadku problemów może coś być nie tak w pliku php.ini. Używam Krasnala i nie wiem o który plik php.ini chodzi. Jeden jest w katalogu Windowsa, drugi w c:\usr\php, trzeci w c:\usr\php5, czwarty w c:\usr\ini\php\5. OK, otwarłem ten z katalogu c:\windows i są tam następujące informacje:
Kod
[mail function]
; For Win32 only.
SMTP =localhost

; For Win32 only.
sendmail_from =admin@localhost

; For Unix only.  You may supply arguments as well (default: 'sendmail -t -i').
;sendmail_path =

Naprawdę nie wiem co może być przyczyną, że jestem informowany o nieprawidłowym odbiorcy w funkcji MAIL i że nagłówki już zostały wysłane.

Pozdrawiam,
Krzysiek

Ten post edytował Musashi 25.10.2006, 15:10:29
Go to the top of the page
+Quote Post
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Uzyj google! Kurde - czy naprawde nie znacie tej wyszukiwarki??
http://www.google.pl/search?hl=pl&q=SM...+Google&lr=
Go to the top of the page
+Quote Post
Musashi
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 19.11.2004
Skąd: Witnica, lubuskie

Ostrzeżenie: (0%)
-----


Te tematy z google nic mi nie pomogły.
Zmieniłem wszystkie pliki php.ini na dysku C (może ktoś mi odpowie który z tych kilku wystarczy zmienić?).
Miałem oryginalnie:
Kod
[mail function]
; For Win32 only.
SMTP =localhost

; For Win32 only.
sendmail_from =admin@localhost

; For Unix only.  You may supply arguments as well (default: 'sendmail -t -i').
;sendmail_path =


Dodałem jeszcze w linii pod SMTP =localhost port serwera, czyli smtp_port = 25, zrestartowałem Krasnala, lecz błąd jest dalej taki sam. Nie wiem o co chodzi. Mam wszystko zrobione tak, jak w tym temacie na forum:
http://forum.php.pl/index.php?showtopic=37778 .
Gdy kliknę ikonkę Krasnala prawym przyciskiem myszy mam oczywiście ptaszka przed napisem "SMTP Serv".

Ten post edytował Musashi 25.10.2006, 21:52:33
Go to the top of the page
+Quote Post
lopik
post
Post #4





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

Ostrzeżenie: (0%)
-----


Nie wiem czy to pomoże.
Na stronie krasnala....

3. Co zrobić aby skrypty php wykorzystywały do wysyłania maili nasz serwer (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?

KRASNAL ma domyślnie ustawiony zewnętrzny serwer SMTP, przez który wysyła pocztę, jeżeli chcemy wykorzystać nasz domowy serwer, należy z MENU wybrać
: USTAWIENIA->php->SERWER SMTP, następnie wpisać własny adres serwera za pośrednictwem którego będą wysyłane maile."
Go to the top of the page
+Quote Post
Musashi
post
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 19.11.2004
Skąd: Witnica, lubuskie

Ostrzeżenie: (0%)
-----


Dziękuję za sugestię, lecz nic to nie pomogło.
Próbowałem ustawić na o2, czyli zmieniłem wartość SMTP na SMTP =smtp.o2.pl.
Otrzymuję wtedy następujący błąd:
Kod
Warning: mail() [function.mail]: SMTP server response: 554 <moj_nick@poczta.onet.pl>: Sender address rejected: Access denied in c:\usr\krasnal\www\dyn\rejestracja.php on line 49

Warning: Cannot modify header information - headers already sent by (output started at c:\usr\krasnal\www\dyn\rejestracja.php:49) in c:\usr\krasnal\www\dyn\rejestracja.php on line 50


Cytat(lopik @ 25.10.2006, 22:37:31 ) *
Nie wiem czy to pomoże.
Na stronie krasnala....

3. Co zrobić aby skrypty php wykorzystywały do wysyłania maili nasz serwer (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?

KRASNAL ma domyślnie ustawiony zewnętrzny serwer SMTP, przez który wysyła pocztę, jeżeli chcemy wykorzystać nasz domowy serwer, należy z MENU wybrać
: USTAWIENIA->php->SERWER SMTP, następnie wpisać własny adres serwera za pośrednictwem którego będą wysyłane maile."


EDIT

Uff, spróbowałem jeszcze raz, pokombinowałem i poszło.
Ustawiłem SMTP na smtp.o2.pl, a kluczem do wszystkiego okazała się być zmiana wartości sendmail_from na moje konto właśnie w o2, czyli sendmail_from =moj_nick@o2.pl.
Czy ktoś mógłby mi jeszcze wytłumaczyć:
- który z plików php.ini na dysku C trzeba zmieniać (bo nie wierzę, że wszystkie)?
- skoro użyłem serwera na o2 i sendmail_from ustawiłem na swoje konto w o2, jaką wartość musi mieć sendmail_from, by po zmianie SMTP=localhost maile mi się wysyłały poprzez localhost?

Dziękuję za dotychczasową pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Wreszcie działa.

Ten post edytował Musashi 26.10.2006, 09:05:54
Go to the top of the page
+Quote Post
Amorph
post
Post #6





Grupa: Zarejestrowani
Postów: 309
Pomógł: 0
Dołączył: 6.06.2006
Skąd: include('root/europe/ poland/szczecin.php');

Ostrzeżenie: (0%)
-----


masz serwer mailowy postawiony u siebie?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Masz konto mailowe na nim założone ?
Jeśli na oba pytania odpowiedziałeś tak to wszystko powinno działać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.09.2025 - 16:05