Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z PEAR Net_SMTP
Forum PHP.pl > Forum > PHP
Dudon
Hej,
próbuje napisać klasę, która odpowiadała by za wysyłanie maili do użytkowników portalu. Jeżeli ktoś posiada książke "PHP 5 Zaawansowane Programowanie" to jest to zagadnienie przedstawione w 14 rozdziale. Korzystam z klasy biblioteki PEAR, Net_SMTP. Generalnie wszystko działa ("chyba") do pewnego momentu, kiedy to do serwera SMTP wysyłana jest komenda "DATA". Nie wiem dlaczego, ale wtedy wszystko się wali :/ . Będę wdzięczny za pomoc. Kody podane ponizej

Kod klasy Communication:
http://wklej.to/tCLPH
Kod klasy EmailComunication:
http://wklej.to/JQgjk
Kod index.php
http://wklej.to/aFdah
Kod klasy EmailRecipient
http://wklej.to/FatB6

Próbuje to uruchomić na home.pl. Moje ciągłe próby walki z tym można zobaczyć na http://www.oneimage.pl/
404
Możesz sprawdzić co zwraca serwer?
Dudon
Pear zwraca to "Invalid response code received from server"
404
Mi bardziej chodzi wartość, którą zwróci Net_SMTP::getResponse.
Dudon
Jak poszperalem to wyswietla error code =503 wiec cos w tym stylu "Bad sequence of commands"

a to o co pytales ma sie tak
Array ( [0] => 503 [1] => 5.5.1 Waiting for RCPT command )

chyba wiem już co jest nie tak. Wydaje mi się że nie wchodzi wogole do tej petli foreach. Powalcze z tym jeszcze za chwile.
404
Coś mi się zdaje, że masz błąd w pętli:
  1. foreach ($this->arRecipientCollection as $strRecipientIdentifier => $objEmailRecipient)
  2. {
  3. $strThisAddress = $objEmailRecipient->getRecipientAddress();
  4.  
  5. if( PEAR::isError($res = $smtp->rcptTo($strThisAddress)) )
  6. {
  7. $this->strErrorMessage = "Nie da się dodać adresata " . $strThisAddress;
  8. echo "Nie da się dodać adresata " . $strThisAddress;
  9. $this->errorCode = 4;
  10. $smtp->disconnect();
  11. return(false);
  12. }
  13. }

Spróbuj najpierw wysłać wiadomość tylko do jednego adresata.
Dudon
ok juz działa dzieki na naprowadzenie biggrin.gif

Ok mam jeszcze jedno pytanie. Probowałem ustawić temat, bawiąc sie nagłówkami ( dodawałem Subject: costam) w roznych miejsach ale nie zadziałało. Ma ktoś pomysł?
kiler129
Pobaw sie telnetem i poznaj protokół SMTP.
Generlanie prawidłowa komunikacja wygląda tak:
Kod
$ telnet mail.server.pl 25
Trying 11.12.13.14...
Connected to mail.server.pl.
Escape character is '^]'.
220 mail.server.pl ESMTP Postfix
EHLO example.com
250-mail.server.pl
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM:ktos@example.com
250 2.1.0 Ok
RCPT TO:grzegorz@server.pl
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject:testowy mail
Testowa tresc maila
.
250 2.0.0 Ok: queued as AA327125B48
QUIT
221 2.0.0 Bye
Connection closed by foreign host.
Dudon
Nie no ok to wiem wszystko biggrin.gif (przynajmniej takie podstawy) Problem tkwi w tym, ze probowałem tego, ale nie chce działać. No ale to moze wina godziny spróbuje jeszcze jutro

Nie no ok to wiem wszystko biggrin.gif (przynajmniej takie podstawy) Problem tkwi w tym, ze probowałem tego, ale nie chce działać. No ale to moze wina godziny spróbuje jeszcze jutro. Jbc wszysto co wysyłam po wrzuceniu DATA

Subject: test

From: Duda Piotr<piotr.duda@onetrade.pl>
To: Piotr Duda<pdudon@gmail.com>
Date: Tue, May 31 03:01:34 CEST 2011 +0200

test

Wysyłałem to w róznych konfiguracjach i wcale nie bylo lepiej :/
kiler129
Po 1 pamięteaj o zakończeniu linii \r\n zamiast \n.
Do tego tutaj każda wolna linia ma znaczenie! O ile dobrze kojarzę to powinieneś wysłać takie nagłówki:

Kod
From: Duda Piotr<piotr.duda@onetrade.pl>
To: Piotr Duda<pdudon@gmail.com>
Subject: test

test
.
Dudon
Udało mi się dzisiaj. Problemem była spacja ktora dodałem po znakach konca linii. I dlatego nie mogłem jej poczatkowo znalezc. Dzieki za wskazówki
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.