ancora newsletter+phpmailler

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
scusate se apro ancora un post (tra l'altro sembra che il problema sia sentito)

come suggerito ho provato a fare l'invio usando la classe phomailler (che in quasi tutti i casi mi funziona)

questo e il codice della pagina che invia (ometto il form)

PHP:
<?php
/*-------------------------------------------------------------------------------------------
invia news letter ad indirizzi di tabella specificata, cambianto anche FROM in funzione della
tabella scelta (l'indirizzo/i FROM modificabili in selezionaTabella.php)
fatto indicazione di UNSCRIBE o rispondendo o cliccando su link.
verificato link UNSCRIBE: OK porta a 0 il campo invia dell'dell'indirizzo che ha cliccato su link

---------------------------------------------------------------------------------------------*/
include_once "connessione.php";
//------------------------------------------------------------------------------per FCK editor
include_once "fckeditor/fckeditor.php";
//istanziamo il metodo dell'editor
//$oFCKeditor = new FCKeditor('FCKeditor1');
//definiamo l'oggetto relativo alla cartella
//contenente l'applicazione
//$oFCKeditor->BasePath = '/fckeditor/';
//definiamo la variabile relativa al contenuto 
//$oFCKeditor->Value = '<p>Testo iniziale.</p>';
//consentiamo l'utilizzo dell'editor
//$oFCKeditor->Create() ; 
//---------------------------------------------------------------------------------------------
$inviate=0;// numero di email inviate
$invia=$_POST['submit'];
if($invia=="invia"){
	$tabella=$_POST['tabella'];//a quale gruppo inviare attualmente bloccato a una tabella
	$titolo=$_POST['titolo'];// oggetto della news
	$titolo.= " -  ".date("F Y");//oggetto dell'email + data: mese anno
	$testo = stripslashes( $_POST['FCKeditor1'] );//testo dell'email
	include_once "selezionaTabella.php";// ricavo email mittente $email_da e nome mittente $email_nome
	//invio =1 inviare --- invio=0 non inviare
	$invia_EM="SELECT * FROM email_infodisisc WHERE invia='1' ORDER BY id";// tabella da utilizzare n° 4 indirizzi
	//$invia_EM="SELECT * FROM ".$tabella." WHERE invia='1' ORDER BY id";//riga da utilizzare dopo collaudo
	$query_IN=mysql_query($invia_EM);
	$num_EM=mysql_num_rows($query_IN);//verifica se ci sono indirizzi
	//richiamo la classe---------------------------------
	require_once "phpmailler/class.phpmailer.php";
	//ed inizio ad istanziare la classe------------------
	$Emailmessaggio = new PHPmailer();
	$Emailmessaggio->SetLanguage('it','language/'); 
	$Emailmessaggio->IsHTML(true); // email in formato HTML
	$Emailmessaggio->FromName= $email_nome;//nome del mittente, da seleziona tabella
	$Emailmessaggio->From=$email_da; //email del mittente, da seleziona tabella
	$Emailmessaggio->Subject=$titolo;// oggetto dell'email
	$Emailmessaggio->Sender = $email_da; //return path
	$Emailmessaggio->Body=$testo."<p style=\"font-size: 10px;\"><br><br>per non ricevere più ns news rispondi scrivendo <b>REMOVE</b><br>to not recieve our news just ansewer writing <b>REMOVE</b></p>";
	//ripulisco il testo per testo alternativo e aggiungo  il remove
	$Emailmessaggio->AltBody = strip_tags($testo)."\n per non ricevere più ns news rispondi scrivendo REMOVE \n to not recieve our news just ansewer writing REMOVE";
	
	$inviate=0;
	
	if ($num_EM > 0){
		while ($riga=mysql_fetch_array($query_IN)){
			$email_A=$riga['email'];// leggo gli indirizzi
			echo $email_A."<br>";
			$Emailmessaggio->AddAddress($email_A);
			if ($Emailmessaggio->Send())
    		{
      			$inviate++;
				//$email_A=""; //non serve a un...
   			}else{
				echo "errore di trasmissione";
			}
			
		}//fine while
	}else{
		echo "non ci sono indirizzi";
	}//fine if indirizzi
	echo "inviate N° ".$inviate;
	mysql_close();
}// fine if invia

e qusto è il risultato degli invii (il testo è ok)

info@primo.it
info@primo.it; ailinen@secondo.com
info@primo.it; ailinen@secondo.com; email@terzo.it
info@primo.it; ailinen@secondo.com; email@terzo.it
info@primo.it; ailinen@secondo.com; email@terzo.it; gianni.cat@quarto.it
info@primo.it; ailinen@secondo.com; email@iterzo.it; gianni.quarto.it
info@primo.it; ailinen@secondo.com; email@iterzo.it; gianni.cat@quarto.it

cioè il primo indirizzo riceve 7 e mail, il secondo 6, il terzo 5.....

ci sto perdendo le notti (sabato e domenica compresi)
 
se non erro ho risolto il problema che posto in modo che possa servire a qualcuno o che qualcuno mi dica se va o no bene. ho inserito

if ($Emailmessaggio->Send())
{
$inviate++;
$Emailmessaggio->ClearAddresses();
echo "inviate N° ".$inviate;
}else{
echo "errore di trasmissione";
}
un'altra piccola cosa (forse più semplice)
come faccio a far stare sempre nelle stesso posto

echo "inviate N° ".$inviate;

in modo che non mi scriva
inviate 1 inviate 2 inviate 3....

:hammer:

--------------------------------------
la notte porta consiglio
 
scusa dimenticavo una cosa importante (soprattutto nell'utilizzo dell newsletters)
con mai() non sono mai riuscito a far arrivare ai miei iscritti e simili email con indirizzo xyz@libero.it e xyz@email.it, proprio non arrivavano.
con phpmailler si (ho una casella su email.it per controllo ed un mio conoscente su libero)
ciao
 

Discussioni simili