ugrás a tartalomhoz

Hírlevél készítése

World-Soft · 2002. Júl. 30. (K), 14.34
Sziasztok!

Szeretnék csinálni PHP-ben egy hírlevélküldő rutint. A levélküldéssel alapjában nincs gond, a címeket egy MySQL táblából ki is tudnám nyerni.
Viszont azt nem tudom milyen módon külgyem el a leveleket. Arra gondoltam, hogy egy ciklus segítségével egyesével küldöm. Még nem próbáltam ki, de attól félek ezzel lesz egy kis gond. Ha több száz (és várhatóan annyi lesz, sőt...) felhasználónak próbálom egymás után elküldeni a mailt, akkor az túl sokáig fog tartani, és a script futása időtúllépés miatt le fog álni.

Ezt hogy lehet kiküszöbölni?

Lehet, hogy a levelek konkrét elküldését nem is PHP-ben kellene csinálni, vagy nem egyesével küldeni? A követelmény az, hogy a címzettek nem láthatják egymás címeit, mert ahoz a többi felhasználónak semmi köze.

Mihamarabbi válaszotokat előre is köszönöm.
 
1

Re: Hírlevél készítése

Granc Róbert · 2002. Júl. 30. (K), 15.01
A magyar PHP levelezőlistán anno sok szó esett erről, és a bölcsek mindenféleképp külső program meghívását ajánlják a php által (erre különböző módszerek lehetnek, a listakiszolgálótól függően).
Véleményem szerint ott ( az archívum a weblabor.hu oldalról elérhető) keress utána.
Robi
2

Re: Hírlevél készítése

Senior · 2002. Dec. 26. (Cs), 00.57
Próbáld ki ezt a módszert!

Most a születésnapot veszük példának!
példa:

  1. /* címzettek */  
  2. $kinek  = "Mari <mari##kukac##example.com>" . ", " ; // figyelj a vesszőre!  
  3. $kinek .= "Kolos <kolos##kukac##example.com>";  
  4.   
  5. /* tárgy */  
  6. $targy = "Augusztusi Születésnapi Emlékeztető";  
  7.   
  8. /* üzenet */  
  9. $uzenet = '  
  10. <html>  
  11. <head>  
  12.  <title>Augusztusi Születésnapi Emlékeztető</title>  
  13. </head>  
  14. <body>  
  15. <p>Itt van az augusztusi születésnapok listája!</p>  
  16. <table>  
  17.  <tr>  
  18.   <th>Személy</th><th>Év</th><th>Hónap</th><th>Nap</th>  
  19.  </tr>  
  20.  <tr>  
  21.   <td>Jocó</td><td>1970</td><td>augusztus</td><td>3.</td>  
  22.   <td>Saci</td><td>1973</td><td>augusztus</td><td>17.</td>  
  23.  </tr>  
  24. </table>  
  25. </body>  
  26. </html>  
  27. ';  
  28.   
  29. /* HTML levél küldése a Content-type fejléc megadásával */  
  30. $fejlec  = "MIME-Version: 1.0\r\n";  
  31. $fejlec .= "Content-type: text/html; charset=iso-8859-2\r\n";  
  32.   
  33. /* további fejlécek */  
  34. $fejlec .= "From: Szuletesnapi Emlekezteto <szulinap##kukac##example.com>\r\n";  
  35.   
  36. $fejlec .= "Cc: szulinaptar##kukac##example.com\r\n";  
  37. $fejlec .= "Bcc: szulinapell##kukac##example.com\r\n";  
  38.   
  39. /* és most küldjük el! */  
  40. mail($kinek$targy$uzenet$fejlec);  
  41.    
Csak a HTML el vigyázz mert ha azt rosszul írod akkor már nem fogja elküldeni mivel PHP s hibára fog hivatkozni.
próbáld ki ezt a példát csak a saját címeidet írd be és már megy is!
ha nem tudsz PHP Mail fuggvényt támogató tárhelyet akkor látogass el ide ide most írok egy újabb üzenetet!
http://phpinfo.freephp.hu/modules.php?op=modload&name=XForum&file=viewthread&tid=8

Ezt a tippet Fűzfa Kálmán adta!!!
http://phpcgi.uw.hu/index.html :D :cool:
3

Re: Hírlevél készítése

Phanatic · 2002. Dec. 26. (Cs), 10.47
Ha több száz (és várhatóan annyi lesz, sőt...) felhasználónak próbálom egymás után elküldeni a mailt, akkor az túl sokáig fog tartani, és a script futása időtúllépés miatt le fog álni.

be lehet allitani futas kozben, hogy mennyi ideig fusson a script:
  1. set_time_limit(0);  
a 0 azt jelenti, hogy barmeddig futhat...
4

set_time_limit(0)

Anonymous · 2005. Jún. 8. (Sze), 18.44
Már ahol a hostmaster ezt engedélyezte. Gondolj csak arra a cégre, aki a honlapját valamelyik szolgáltató szerverén tárolja. Az ezt nem teheti meg a safe mode miatt. Pedig csak a feliratkozott ügyfeleinek szeretne levelet küldeni. De mondjuk a szolgáltató limitálta az egyszerre elküldhetö CC-k számát...

Már azon is gondolkodtam, hogy minden oldal elküld 10-et és utána refresh-el. :) De ez egy kicsit barbár megoldás.

ProClub
proclub##kukac##karinthy.hu
5

próbáltad?

Hodicska Gergely · 2005. Jún. 9. (Cs), 00.41
Szia!


Miért nem lehet kipróbálni az ajánlott kódokat? Eleve egy szövegen belül a szöveghatároló jeleket nem ártana escapelni, de ez a kissebbik baj. Ilyen fejléc megadás nincs:
Cc: <a href="mailto:szulinaptar##kukac##example.com">szulinaptar##kukac##example.com</a>

Hol láttál Te ilyet? Nálunk is volt szó a levél fejlécek felépítéséről, de a megfelelő RFC tanulmányozása is tanulságos lehet.


Felhő
6

PHPMailer

Hodicska Gergely · 2005. Jún. 9. (Cs), 00.47
Szia!


Próbáld ki a PHPMailer nevü kis cuccot. Ezzel tudsz közvetlenül SMTP-n keresztül küldeni levelet.

Semmiféleképpen sem ajánlom, hogy mail függvénnyel, egyesével küld ki a leveleket, ez nem túl erőforrás barát megoldás. Szerintem futass x. percenként cronból egy scriptet, ami minden meghívásakor megnézi az adatbázisban, hogy van-e kiküldendő levél, és ha van, akkor mondjuk kiküld 30 darabot. Arra figyelj, hogy ha ugyanazt a levelet küldöd ki, akkor sem adhatsz meg akármennyi címzettet, mert ennek száma bizonyos szolgáltatóknál (pl. axelero is) limitálva van.


Felhő
7

mail queue

Balogh Tibor · 2005. Jún. 9. (Cs), 05.32
PEAR Mail_Queue
A PEAR kézikönyvben ennek megvan a magyar fordítása is.
8

Nem tetszett

Hodicska Gergely · 2005. Jún. 9. (Cs), 13.52
Szia!


Én anno néztem ezt is, de nem tetszett, kevésnek tűnt, írtam helyette sajátot. Persze a kérdezőnek jól jöhet.


Felhő
9

PHP scriptí

Anonymous · 2005. Nov. 22. (K), 13.00
Szerintem jó megoldás a PHP script, és úgy tudod megoldani a dolgot, hogy ne legyen időtúllépés, hogy amikor az adatbázisból elküld egy címre egy levelet, a php újra hívja meg magát, változóként elküldve ($_GET) a már használt email címet.
Majd amikor frissül a lap, akkor a bekért válotozó emailcímét leellenőrzi, és a következőre küldi ki a levelet, majd így tovább..
10

Nem lesz jó

janoszen · 2005. Nov. 23. (Sze), 12.11
Nem lesz jó, mert ehhez nyitva kell lennie a böngésző ablaknak. Avagy, ha lefagy a böngésző, akkor lehet mókázni azon, hogy hol is tartottál.

Azt hiszem, Linux szerverrel nem is gond a levélküldés, mert csak bepakolja a sendmail-nek, ami aztán szépen elintézgeti a kiküldést.