![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 25.06.2003 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Witam
Wiem ze bylo juz sporo na temat seryjnego wysylania maili, w archiwum kopalem mocno i gleboko:). Przerobilem troche skrypt pochodny od tego z phpBB (byl wklejany kiedys tu). Problemem jest to ze wysyla pieknie pierwszego maila z listy, ale niestety zadnego wiecej. Zrobilem wyrzucanie na ekran calego dialogu z serwem SMTP, stamtad widac, ze po pierwszym QUIT (odpowiedz 221) juz nic serwer nie odpowiada. Co moze byc przyczyna? Jesli nie da rady w ten sposob to moze w jakis inny? (probowalem funkcji mail(), oczywiscie napotkalem te powszechne trudnosci zwiazane z duza iloscia maili). Parametry: plik 1.txt zawiera w kolejnych liniach kolejne maile, plik .php3 dostaje dane(tresc,temat) z formularza html, wysylam to kompa(win89,apache1.3,php4.0.5) w LANie. Admin serwera SMTP mowi ze moja podsiec nie ma zadnych blokad na tym serwerze SMTP. Mysle ze dosyc wyczerpujace wyjasnienia, ponizej nieposluszny;) skrypt: [php:1:5059185e43]<?php function server_parse($socket) { $server_response=fgets($socket,256); $res=substr($server_response,0,3); if($res>=400) die('Problem z wysyłaniem. '.$server_response); print("$server_response<BR>"); } $fp=fopen("1.txt","r"); $plik=fread($fp,filesize("1.txt")); $adresaci=split("n",$plik); fclose($fp); $wyslano=0; $smtp_host = 'mail.ic.net.pl'; $email = 'infopap@infopap.pl'; while($adresat=each($adresaci)) { $socket=pfsockopen($smtp_host,25); if(!$socket) echo "Nie mogę się połączyć z SMTP"; server_parse($socket); $adresat[value]=trim($adresat[value]); fputs($socket, 'HELO '.$smtp_host."rn"); server_parse($socket); fputs($socket, 'MAIL FROM: <'.$email.">rn"); server_parse($socket); fputs($socket, 'RCPT TO: <'.$adresat[value].">rn"); server_parse($socket); fputs($socket, 'DATA'."rn"); server_parse($socket); $naglowek = "MIME-Version: 1.0rnContent-type: text/html; charset=iso-8859-2rn"; $naglowek .= "Subject: $tematrn"; $naglowek .= "To: $adresat[value] <$adresat[value]>rn"; fputs($socket, "$naglowekrnrn"); fputs($socket, "$trescrn"); fputs($socket, ".rn"); server_parse($socket); fputs($socket, "QUITrn"); server_parse($socket); $wyslano++; fclose($socket); } print("Wyslano $wyslano maili"); ?>[/php:1:5059185e43] |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 100 Pomógł: 0 Dołączył: 25.01.2003 Skąd: mazury, wawa Ostrzeżenie: (0%) ![]() ![]() |
Moze nie dawaj komendy QUIT tylko wysylaj jednym socketem. Przed chwila sprawdzilem telnetem i dziala.
-------------------- --
Carpe Diem |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 25.06.2003 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
wielkie dzieki, dziala
![]() a tak jeszcze z ciekawoscie sie spytam: dlaczego nie moglem tego wyslac otwierajac i zamykajac socket za kazdym wysylanym mailem? pozdrawiam Alek |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 0 Dołączył: 4.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
dlaczego nie wyslesz wszystkich mailow z naglowkiem BCC?
wysylasz raz,nie meczysz serwera HTTP a wszystkim zajmie sie serwer SMTP |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 26.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
a moglby ktos napisac jak trzeba by zmienic skrypt by uzyc smtp ktore trzeba uwierzytelniac haslem? dzieki z gory
-------------------- ..::tHe FoE::..
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 6.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat a moglby ktos napisac jak trzeba by zmienic skrypt by uzyc smtp ktore trzeba uwierzytelniac haslem? dzieki z gory
Zamień: [php:1:b48ad0cd8b]<?php fputs($socket, 'HELO '.$smtp_host."rn"); server_parse($socket); ?>[/php:1:b48ad0cd8b] na [php:1:b48ad0cd8b]<?php fputs($socket, 'EHLO '.$smtp_host."rn"); server_parse($socket); fputs($socket, 'AUTH PLAIN ' . base64_encode(" $user $password") . "rn"); server_parse($socket); ?>[/php:1:b48ad0cd8b] oraz popraw funkcje server_parse tak by przyjmowała wielolinijkowe odpowiedzi od serwera. W przypadku takich odpowiedzi wszystkie linie za wyjątkiem ostatniej są postaci: Kod xyz-tekst
a ostatnia Kod xyz tekst
gdzie xyz to 3-cyfrowy kod odpowiedzi. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 07:01 |