seguendo la guida di gm sul suo sito ho cercato di associarla alle mie esigenze.
In pratica l'email che devo inviare la mando a un centinaio di indirizzi presenti in un database.
Lo script manda l'email ma non esce il nome che ho impostato io, ma quello predefinito del server.
questo e' il codice che sto usando:
Codice PHP:
<?php
$host = "miohost";
$db_nome = "miodatabase";
$db_user = "miouser";
$db_pass = "miapass";
$nome_tabella = "nome_della_tabella";
$connessione = @mysql_connect("$host","$db_user","$db_pass")
or die("Impossibile stabilire una connessione.");
$db = @mysql_select_db($db_nome, $connessione)
or die("Impossibile selezionare il database.");
$sql = "select * from $nome_tabella order by id asc";
$risultato = @mysql_query($sql,$connessione)
or die("Impossibile eseguire l'interrogazione.");
while ($riga = mysql_fetch_assoc($risultato)) {
$id = $riga['id'];
$email = $riga['email'];
$nome="Ufficio";
$email_nostra="info@miosito.it";
$mittente="$nome <$email_nostra>";
// RENDIAMO LO SCRIPT COMPATIBILE CON LE VERSIONI DI PHP < 4.1.0
if(!isset($_POST)) $_POST = $HTTP_POST_VARS;
if(!isset($_FILES)) $_FILES = $HTTP_POST_FILES;
// RIPULIAMO I VARI CAMPI DEL MODULO
$Soggetto = trim(stripslashes($_POST["Soggetto"]));
$Contenuto = trim(stripslashes($_POST["Contenuto"]));
// ASSEGNIAMO A VARIABILI PIU' LEGGIBILI, LE PROPRIETA' DELL'ALLEGATO
$attach = $_FILES["allegato"]["tmp_name"];
$file_name = $_FILES["allegato"]["name"];
$file_type = $_FILES["allegato"]["type"];
$file_size = $_FILES["allegato"]["size"];
// DELIMITATORE
$boundary = md5(uniqid(microtime()));
// APRIAMO L'ALLEGATO PER LEGGERLO E CODIFICARLO
$file = @fopen($attach, "r");
$contents = @fread($file, $file_size);
$encoded_attach = chunk_split(base64_encode($contents));
@fclose($file);
// INTESTAZIONI DELLA MAIL
$mail_headers .= "MIME-version: 1.0\n";
$mail_headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\n";
$mail_headers .= "Content-transfer-encoding: 7BIT\n";
$mail_headers .= "X-attachments: $file_name\n";
// COSTRUIAMO IL CORPO DELLA MAIL
$mail_body = "--$boundary\n";
$mail_body .= "Content-Type: text/plain; charset=us-ascii\n";
$mail_body .= "Content-Transfer-Encoding: 7bit\n\n";
$mail_body .= "$Contenuto\n\n";
$mail_body .= "--$boundary\n";
$mail_body .= "Content-type: $file_type; name=\"$file_name\"\n";
$mail_body .= "Content-Transfer-Encoding: BASE64\n";
$mail_body .= "Content-disposition: attachment; filename=\"$attach_name\"\n\n";
$mail_body .= "$encoded_attach\n";
$mail_body .= "--$boundary--\n";
// INVIO DELLA MAIL
if(@mail($email, $Soggetto, $mail_body, $mail_headers)) { // SE L'INVIO E' ANDATO A BUON FINE...
echo "La mail è stata inoltrata con successo.";
} else {// ALTRIMENTI...
echo "Si sono verificati dei problemi nell'invio della mail.";
}
}
?>
Sono anche riuscito a far uscire il nome impostato nei parametri sopra, ma poi l'email si leggeva male, usciva una cosa cosi':
codice:
--532ad06c1fe9d0f03376f1836481e47a
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
testo scritto nel corpo del messaggio
--532ad06c1fe9d0f03376f1836481e47a
Content-type: ; name=""
Content-Transfer-Encoding: BASE64
Content-disposition: attachment; filename=""
--532ad06c1fe9d0f03376f1836481e47a--
non so dove devo piazzare questo:
$mail_headers="From: $mittente";
Chi mi sa aiutare