hromadné odesílání e-mailů

Vsem Vam nejdriv preji prijemne proziti vanocnich svatku :)

Ted k otazce. Mam zakazniky, kterym chci posilat aktuality (-- mail($to,$subject,$message,$headers) ---) ... Adresy nactu z databaze a ty pak dam do slepe kopie Bcc. Vse funguje tak jak ma, pouze kdyz se nactou 4 adresy. Jakmile se nacte 5 a vice adres, e-maily se neodeslou ... :(

Napada nekoho, cim by to mohlo byt ...?

Dekuju
Jasně že napadá .. na WZ je odesílání E-mailů přes funkci mail omezené..
nevím kolik mailů po jaké době ale před nějakým časem to bylo snad 10mailů na 1hodinu ..
pokud si dobre pamatuju, omezeni je 10 mailu za hodinu, 1 mail lze poslat na az 10 adres (kopie). tak mozna zmenili ten pocet kopii nebo mas nekde chybu ty. i kdyz jestli tam ty adresy davas v cyklu... no nevim. ukazka kodu by nebyla?
pokud to má být něco seriózního tak bych z toho webzdarma, pokud to jde, vynechal a posílal to třeba pomoci SMTP servru poskytovatele připojení, z databáze bych stáhl jen seznam adres a na odeslání bych použit třeba Blat.
tady je část kódu: ....

$headers ="From: Vila Josefina <vilajosefina@email.cz> \n"."Content-Type: text/html; charset=windows-1250 \n"."bcc: ".$adresy."";


if(mail($to,$subject,$message,$headers)){
echo"<b>Aktualita odeslána na e-maily z databáze</b><br>
(počet e-mailů: ".substr_count($adresy,"@").")";}
else{
echo"<b>vyskytla se chyba, e-maily nebyly odeslány</b>";};


adresy to načte naprosto v pořádku a problém se skutečně objeví v momentě, kdy je pět a více kopií ...
Pokud je to omezení ze strany WZ, vůbec nechápu, jaký to má smysl ...?

Co blat? Neznám, ani jsem nenašel ...
Jenom ještě pro doplnění. Odesílání e-mailů probíhá tak, že adresy načtu do proměnné $adresy. Poté z databáze načtu text, který bude v těle e-mailu, v předmětu a pošlu to najednou (nikoliv v cyklu)
dnes naposled, posílám celý zdroj ...

<?php /* Created on: 12/22/2006 */ ?>

<body>
<?php


$link=mysql_connect ("localhost","","") or die;
$db=mysql_select_db ("vilajosefina",$link) or die;
$sql="select*from aktuality order by unikatni desc limit 1;";
$sql2="SELECT e_mail FROM adresy;";
$sql2_go=mysql_query($sql2,$link) or ("NESLO PROVÉST");


// načtení e-mailových adres
while ($zprava2=mysql_fetch_array($sql2_go)) {
$adresy="".$zprava2[e_mail].",";
$file=fopen ("e_mail.dat","a");
fwrite($file, $adresy);
fclose($file);
};

$sql_go=mysql_query($sql,$link) or ("NESLO PROVÉST");

// hromadné odeslání e-mailu
while ($zprava=mysql_fetch_array($sql_go)) {


$size=filesize("e_mail.dat");
$file=fopen ("e_mail.dat","a+");
$adresy=fgets($file,100);
fclose($file);

$to="vilajosefina@email.cz";


$subject=$zprava["nadpis"];
$text=SUBSTR($zprava["text"], 0, 100);
$den=$zprava["den"];
$mesic=$zprava["mesic"];
$rok=$zprava["rok"];

$message="

<head>
<title>
$subject
</title>
</head>
<body>
<font size=\"3\">
<br>Vážení přátelé,<br><br>

máme pro Vás další aktualitu:<br><br>

<b>$subject $den.$mesic.$rok</b><br>
$text ...........<br><br>

Více na <a href=\"http://www.vilajosefina.wz.cz\">www.vilajosefina.wz.cz</a>,

Se srdečnými pozdravy, posádka z Vily Josefíny :)
</font>
</body>

"; };

$headers ="From: Vila Josefina <vilajosefina@email.cz> \n"."Content-Type: text/html; charset=windows-1250 \n"."bcc: ".$adresy."";

// odeslani e-mailu
if(mail($to,$subject,$message,$headers)){
echo"<b>Aktualita odeslána na e-maily z databáze</b><br>
(počet e-mailů: ".substr_count($adresy,"@").")";}
else{
echo"<b>vyskytla se chyba, e-maily nebyly odeslány</b>";};


mysql_query($mysql);
mysql_close($link);

//vymazání adres

$file=fopen ("e_mail.dat","w");
fwrite($file,"");
fclose($file);



?>
</body>
Duvod omezeni poctu emailu je vlastne to, o co se snazis. Tedy odesilani emailu ve velkem. Pro tebe a tvuj priklad to nic neznamena, ale tento zpusob se da pekne zneuzit ke spamovani.
toto dost dobre nechapu:
// načtení e-mailových adres
while ($zprava2=mysql_fetch_array($sql2_go)) {
$adresy="".$zprava2[e_mail].",";
$file=fopen ("e_mail.dat","a");
fwrite($file, $adresy);
fclose($file);
};
proc to ukladas do souboru, kdyz ho na konci skriptu smazes? proc neudelas jenom toto?
while ($zprava2=mysql_fetch_array($sql2_go))
$adresy.= $zprava2['e_mail'].",";

pak tam z toto souboru nacitas 100 znaku jako ty adresy. ale jak vis, ze ty adresy maji dohromady jenom 100 znaku? odhaduju tak 20 znaku na jednu adresu, tak to se ti nenacte ani 5 adres. nebude ten problem tady?

jo a toto
$sql_go=mysql_query($sql,$link) or ("NESLO PROVÉST");
se pise takto
$sql_go=mysql_query($sql,$link) or die("NESLO PROVÉST");
a uvadi se tam smysluplny popis chyby, abys podle toho poznal, kde a proc ti to spadlo.
a pokud mas pole indexovane retezci, tak se ty retezce davaji do uvozovek, pokud to neni konstanta. takze misto $zprava2[e_mail] se pise $zprava2['e_mail'] nebo $zprava2["e_mail"]
Co blat? Neznám, ani jsem nenašel ...

do vyhledávacího okénka na Google se zadá blat a stiskne se Enter
Toniku, dekuju za rady.

s nactenim e-mailovych adres jsi mel pravdu. Proc delat veci jednoduse ....
Dekuju

100 znaku jsem nacital take spatne. Omylem jsem tam nevlozil $size=filesize("e_mail.dat"); ... Bohuzel to nebyl ten problem.

Zdrojovy kod jsem opravil dle tveho ale opet pri pate a dalsi slepe kopii se e-mail neodesle. Nejspis je to omezeni ze strany WZ ... :-( Nevite, jestli je to nekde napsano, jake omezeni jsou, aby se clovek podle toho mohl zaridit?

Bylo by fajn, kdyby WZ umelo rozeznat, kdo provadi spam a kdo obchodni sdeleni pro sve zakazniky (s jejich souhlasem, cili legalni sdeleni). Ale to asi neni dost dobre mozne ... :( Alespon max pocet Bcc by mohli zvednout ...
<HTML>Tato vec jde pomerne tezko rozlisit...
napis na podpora@webzdarma.cz:

Predmet: Zadost o zvyseni mailoveho omezeni

Text: Prosim o navyseni omezeni poctu mailu za hodinu, potreboval bych to k rozesilani obchodnich sdeleni.
Muj ucet: vilajosefina.wz.cz
Dekuji</HTML>