Salve a tutti!
Dal titolo spero sia chiaro di cosa necessito.
inizio con illustrare lo script che ho creato per inviare la news in questione.
Scelta la news che può essere in html oppure no, può aver eun allegato oppure no, scelgo i destinatari che possono essere:
1- tutti (dui tutte le categorie)
2- tutti quelli appartenenti ad una categoria specificata
3- indirizzo scelto
a questo punto mando alla funzione manda_mail i seguenti valori
Codice PHP:
<?php
function manda_mail($des, $oggetto, $corpo, $estensione, $id) {
/*
$des=categoria di destinatari(in questo caso tutti)
$oggetto=oggetto news
$corpo=il corpo della news( html oppure testo semplice)
$estensione= estensione dell'allegato (se presente sarà .pdf, .doc, .jpg,... sennò sarà vuota)
$id= id della news selezionata
*/
if ($des=="tutti") {
//nella query seguente seleziono tutti gli indirizzi email
$query = mysql_query("SELECT distinct(email) FROM newsletter ORDER BY id");
// estraggo nella variabile un indirizzo alla volta
while ($data=mysql_fetch_array($query))
{
$indirizzo_email = $data["email"];
$mess=$corpo;
/*Nella variabile $mess va inserito tutto il codice html che comporrà il corpo dell'email che si vuole inviare. Come nell'esempio si possono utilizzare anche i fogli di stile.*/
$e=$indirizzo_email; /*Inserire l'indirizzo email a cui si vuole spedire l'email*/
$ogg=$oggetto; /*Inserire l'oggetto dell'email da spedire*/
$mittente="pippo@waldisney.it"; /*Inserire l'indirizzo email che verrà visulaizzato come mittente dell'email*/
$reply="pippo@waldisney.it"; /*Inserire l'indirizzo email a cui verranno inviate le risposte all'email inviata*/
$path="allegati/lettera_".$id."/allegato.".$estensione;
if ($estensione!=""){ //utilizzo questa funzione per ricavarmi l'estensione del file
$c_array = explode("/",$path);
// estraggo l'ultimo valore --> estensione del file
$allegato = array_pop($c_array);
$titolo="$allegato"; /*Inserire il nome che si vuole dare all'allegato*/
$f= $path; /*Inserire l'indirizzo del file che si vuole inviare come allegato*/
$filetype="application/pdf"; /*Inserire il formato MIME del file da allegare
--> qui di seguito trovo la lista mime dalla quale selezionare l'impostazione corretta [url]http://www.asahi-net.or.jp/en/guide/cgi/mimetype.html[/url] <--
inserire il giusto mime a seconda del file da allegare*/
}
$intestazioni = "From: $mittente\nReply-To: $reply\nX-Mailer: Sismail Web Email Interface\nMIME-version: 1.0\nContent-type: multipart/mixed;\n boundary=\"Message-Boundary\"\nContent-transfer-encoding: 7BIT\nX-attachments: $titolo";
$body_top = "--Message-Boundary\n";
$body_top .= "Content-type: text/html; charset=iso-8859-1\n";
$body_top .= "Content-transfer-encoding: 7BIT\n";
$body_top .= "Content-description: Mail message body\n\n";
$msg_body = $body_top . $mess;
if ($estensione!=""){
$filez = fopen($f, "r");
$contents = fread($filez, filesize($f));
$encoded_attach = chunk_split(base64_encode($contents));
fclose($filez);
}
$msg_body .= "\n\n--Message-Boundary\n";
$msg_body .= "Content-type: $filetype; name=\"$titolo\"\n";
$msg_body .= "Content-Transfer-Encoding: BASE64\n";
$msg_body .= "Content-disposition: attachment; filename=\"$titolo\"\n\n";
$msg_body .= "$encoded_attach\n";
$msg_body .= "--Message-Boundary--\n";
if(mail($e,$ogg,$msg_body, $intestazioni)) {
?>
<font color="#FF00FF" > <? echo "Spedito a ".$indirizzo_email."
"; ?></font>
<? }
else {
?>
<font color="#FF0000"><? echo "Errore nell'invio email a:".$indirizzo_email."
"; ?></font>
<? }
} // CHIUSURA DEL CICLO WHILE
if ($estensione!=""){
// echo "allegati/lettera_".$id."/allegato.".$estensione."
";
// echo "allegati/lettera_".$id;
unlink("allegati/lettera_".$id."/allegato.".$estensione);
rmdir("allegati/lettera_".$id);
$sql = "UPDATE letter SET estensione=' ' where id = '" . $id ."' ";
$result = mysql_query($sql) or die("Errore durante l'aggiornamento al database");
}
} // CHIUSURA DELL' IF
}//chiudo la funzione manda mail
?>
spero di aver commentato bene ogni singola parte.
La domanda è:
come suddivido gli indirizzi in modo che lo script non vada in time out??
Ho pensato... li inserisco tuttiin un array... e poi contando l'array..ogni 50-100 indirizzi invio, ma ciò mi comporta una modifica sostanziale all'intero script...
Chi sa consigliarmi un metodo per ovviare alla problematica di time-out??
Grazie