phpmailer??

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
ciao
ho un piccolo problemino, ma non so se dipenda da phpmailler.
mi sono fatto un piccolo script per l'invio di news letters.
se l'invio è OK mi da una serie di *********... eventualmente con intramezzati degli E (per errore).
sin'ora, giornalmente, ho fatto circa 7-8 invii al giorno per in totale circa di 3500 invii.
tutto questo sino a ieri.
da ieri non sono più riuscito ad inviare tutta una serie di EEEE...
a cosa può essere dovuto?
posto la parte di codice icriminato (anche se penso che non dipenda da quello).


PHP:
<?php
set_time_limit(240);//esagero per essere tranquillo
//valido i vari input dal form...
//istanzio phpmailler....
//dat per smtp....
//interrogo...
$data=time()+(60*24*60*60);//due mesi fa
$query=mysql_query("SELECT * FROM nl_borgo WHERE cat='$cat' AND (invio=0 OR invio > $data) LIMIT 50");
$ei="";//messaggio per invio OK o ERRORE TRASM
		if(mysql_num_rows($result) > 0){
		while($riga=mysql_fetch_array($result)){
			$Emailmessaggio->AddAddress($riga['email']);
			if($Emailmessaggio->Send()){ //se messaggio inviato
  				//annullo l'inviato
				$Emailmessaggio->ClearAddresses();
				$Emailmessaggio->ClearAllRecipients();
				//uppo l'indirizzo inviato
				$data_invio=time();//momento dell'invio
				if($cat != "P"){//non sono PROVE
					$query_up="UPDATE nl_borgo SET invio=$data_invio WHERE email='".$riga['email']."'";
					$result_up=mysql_query($query_up);
				}
				$ei.= "*";
			}else{//errore trasmissione
				$ei.= "E";
				$Emailmessaggio->ClearAddresses();
				$Emailmessaggio->ClearAllRecipients();
				//uppo l'indirizzo in modo che non sua riinviabile
			}//fine invio
			usleep(50);
		}//fine del while
		}else{
			$ei.="non ci sono email da inviare";
		}
	}//fine ok-ko giusto
	if($ei !=""){echo $ei."<br>";}
}//fine del submit invio
?>

p.s.
il codice non è stato modificato

dimenticavo: invio da locale tramite smtp
 
Prova a mettere tutto all'interno di un blocco try catch come in questo esempio e vedi se ti restituisce qualche errore.
 
ciao
ho provato il codice con try/catch è ho ottenuto che non da errore, ma non invia le news, ho fatto la prova con gli indirizzi di prova tra cui il mio.
questo è il codice (tralascio il form di scelta)

PHP:
<?php
set_time_limit(240);
include_once "../../_connessione/connessione.php";
if(isset($_POST['invia'])){
	$ok_ko="";
	if($_POST['cat']==""){$ok_ko.="<br>non selezionata categoria";}else{$cat=$_POST['cat'];}
	if(trim($_POST['quale_news'])==""){$ok_ko.="<br>non selezionato tipo news";}
	if($ok_ko==""){
		//var_dump($_POST['numero']);echo "<br>";
		$presenti=$_POST['numero'];
		//var_dump($presenti);echo "<br>";
		if($presenti[$cat]=="0"){$ok_ko.="<br>nella categoria $cat non ci sono indirizzi inviabili";}
	}
	if($ok_ko==""){
		$news=trim($_POST['quale_news']);
		$ok_ko.="<br>invio news $news a categoria $cat";
		if($cat=="P"){
			$oggetto="invio di prova ".date("d.m.Y H:i:s");
		}else{
			$oggetto="Borgo Italia info ".date("M Y");
		}
		include_once($news);
		/*esempio: $news == news_02-2001.php
		e dentro il file php c'è la variabile $testo
		$testo=<<<EOD tutto il testo in HTML EOD;
		*/
		$data=time()+(60*24*60*60);//due mesi fa
		$query="SELECT * FROM nl_borgo WHERE cat='$cat' AND (invio=0 OR invio > $data) LIMIT 50";
		//richiamo la classe e l'istanzio
		require_once "phpmailler/class.phpmailer.php";
		$Emailmessaggio = new PHPmailer(true);
		try {
			$Emailmessaggio->SetLanguage('it','language/');
			//dati per SMTP ********************************************
			$Emailmessaggio->IsSMTP();  // send via SMTP
			$Emailmessaggio->Host     = "smtp.xxxxx.it"; // SMTP servers
			$Emailmessaggio->SMTPAuth = true; // turn on SMTP authentication
			$Emailmessaggio->Username = "xxxx.xxxxx";  // SMTP username
			$Emailmessaggio->Password = "yyyyyyyy"; // SMTP password
			//per inviare da locale *** FINE*****
			$Emailmessaggio->IsHTML(true); // invio l'email in formato HTML
			$Emailmessaggio->FromName= "borgo-italia";
			$Emailmessaggio->From="info@borgo-italia.it";
			$Emailmessaggio->Subject=$oggetto;
			$Emailmessaggio->Body=$testo;
			$Emailmessaggio->Priority=1;
			$Emailmessaggio->AddReplyTo("info@borgo-italia.it");
			//-------inizio a ciclare 50 indirizzi al massimo con time +di due mesi
			$result=mysql_query($query);
			$ei="";
			while($riga=mysql_fetch_array($result)){
				//var_dump($riga['email']);echo "<br>";
				//metto l'indirizzo in php mailler
				$Emailmessaggio->AddAddress($riga['email']);
				$Emailmessaggio->Send(); //messaggio inviato
  				//annullo l'inviato
				$Emailmessaggio->ClearAddresses();
				$Emailmessaggio->ClearAllRecipients();
				//uppo l'indirizzo inviato
				$data_invio=time();//momento dell'invio
				if($cat != "P"){
					$query_up="UPDATE nl_borgo SET invio=$data_invio WHERE email='".$riga['email']."'";
					$result_up=mysql_query($query_up);
				}
				$ei.= "*";
			}//fine del while
		} catch (phpmailerException $e) {
  			echo $e->errorMessage(); //Pretty error messages from PHPMailer
		} catch (Exception $e) {
 			 echo $e->getMessage(); //Boring error messages from anything else!
		}
	}//fine ok-ko giusto
	if($ei !=""){echo $ei."<br>";}
	echo "$ok_ko<br><br>";
	//echo "<meta http-equiv='Refresh' content='5; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}
?>

quello che non capisco è perche per un certo periodo ha funzionato tutto, poi ad un tratto (SENSA MODIFICARE NULLA) ha smesso:confused:
 
ciao
mi è venuto un dubbio:
è possibile che il server SMTP (che ho indicato con "smtp.xxxxx.it"; // SMTP servers) blocchi l'invio dallo script?

p.s.
quando invio con outlook sempre dallo stesso server le email vengono inviate
p.s. al p.s.
mi era venuto il dubbio che il db si fosse corrotto, ma dopo varie verifiche il db è ok
 
Se provi a fare un semplice invio (una singola mail) tramite phpmailer utilizzando lo stesso SMTP ti succede lo stesso?
 
ciao
nisbaho provato a togliere il while e mettere
$Emailmessaggio->AddAddress("info@borgo-italia.it");
in settimana prossima provo a caricare in remoto, togliere l'smtp perchè su aruba non l'accetta e riprovo. se partono è perobabile che sia colpa del server (o no?)
 

Discussioni simili