Problemi phpmailer x invio ad indirizzi di libero. Aiutatemi!

Troublesome 80'

Nuovo Utente
6 Ott 2008
4
0
0
Ciao a tutti, sto usando phpmailer x inviare messaggi agli utenti
iscritti su un sito che gestisco ma continuo ad avere problemi con
libero nel senso che i destinatari di libero nn ricevono nulla. Ho già
fatto diverse ricerche e mi sembra che alcuni abbiano risolto il
problema, solo che utilizzando la stessa tecnica nn ho ancora ottenuto
i risultati sperati. Ho provato a valorizzare correttamente tutte le
proprietà del messaggio questo è il codice incriminato:

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

$mail = new PHPMailer();
$mail->From = $email_rif;
$mail->FromName = $cliente;
$mail->Subject = $subject;
////////// COSTRUISCE IL CORPO DELLA MAIL //////////
$body="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
\n<html>\n<head>\n<meta content=\"text/html;charset=ISO-8859-15\" http-
equiv=\"Content-Type\">\n<title>" .
"Registrazione su mio sito</title>\n</head>\n<body>\n" .
"<div style=\"border: 2px solid silver; padding: 2px; font-
family: Arial, Verdana; font-size: 12px; width: 500px;\">\n" .
" <div style=\"border: 1px solid #3FA9DE; padding: 2px;\">
\n" .
" <div style=\"border: 2px solid silver; padding: 2px;
\">" .
" <div style=\"text-align: center; padding-bottom: 5px;
\">" .
" <img style=\"margin-top: 5px; border: 1px solid silver;
\" src=\"http://www.sito.eu/it/images_web/logo_mail.jpg\" alt=\"MIO
SITO\">\n" .
" </div>" .
" <div>\n" .
" testo del messaggio\n" .
" </div>" .
" </div>\n" .
" </div>\n" .
"</div>\n" .
"</body>\n</html>";
$mail->Body = $body;
$mail->AltBody = strip_tags($body2);
$mail->Sender = $email_rif;
$mail->AddReplyTo($email_rif,$email_rif);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = $smtp_rif; // SMTP server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = $smtp_user; // SMTP username
$mail->Password = $smtp_pwd; // SMTP password
$mail->AddAddress($to);
@$mail->Send();
$mail->SmtpClose();
unset($mail);

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Grazie anticipatamente a tutti x eventuali suggerimenti postati, Ciao!
 
Purtroppo non è un problema che dipende da PHP o da Sendmail, si tratta di un blocco dovuto all'antispam di Libero.
 
ciao grazie per la risposta, xo' scusami anticipatamente se ti faccio qualche domanda(spero che tu risponda): Non posso fare niente x impostare dei parametri che gli facciano accettare i messaggi che mando? Anche senza usare l'smtp nn funziona, quindi nn ci sono strumenti adatti a programmare una newsletter in php(nn credo) ? Quali altri provider danno gli stessi problemi eventualmente? Cosa mi suggerisci di fare?
 
il problema, come vedo si ripresenta, devo dirti non solo con libero ma a me capita anche con email.it:incazz2:

l'unica cosa che non capisco perchè vengano bloccate le email mie e non quelle del viagra, e-bay fasulle, nigeriani che ti offrono soldi gratis...
e chi più ne ha più ne metta...

in cosa sono più bravi gli spammer?

:hammer:
 
Ammettendo che il vostro Ip non sia finito in qualche blacklist, direi che la soluzione potrebbe essere quella di analizzare le intestazioni delle email, provate a inviarvene una e guardate se negli headers non c'è qualcosa che possa motivare la rimozione del messaggio (ad esempio roba tipo
: Received: from xxxxxxxxxxxx.com (xxxxxxxxxxxx.it [127.0.0.1])).

In ogni caso una richiesta di assistenza al vostro provider di hosting per sapere se sono "in buoni rapporti" con Libero la farei.
 
La Soluzione

Buongiorno a tutti scusate x lo stress causatovi e grazie x i vostri post, la mi soluzione è questa(il codice sottostante) e vi spiego xkè nn andava. Innanzitutto con libero scordatevi l'smtp nn arriverà mai e poi bisgna necessariamente valorizzare alcune proprietà della classe phpmailer ad esempio il replyto poi ho dovuto eliminare la riga dove valorizzavo il sender del phpmailer notando che il mio provider(pegaso hosting) lo mette di suo(sirio@pegasohosting.net), quindi togliendo l'utilizzo dell'smtp e lasciando il sender comunque nn arrivava allora ho eliminato entrambi. In qualsiasi caso devo ammettere che erano comunque e sempre solo problemi di libero(f------ libero!). Spero che questo possa servire a qualcuno, alla prossima ciao!

///////////////////////////////////////////////////////////////////////////////

require("path_to/class.phpmailer.php");
$mail = new PHPMailer();
$mail->From = $email_rif;
$mail->FromName = $cliente;
$mail->AddReplyTo($email_rif,$cliente);
$mail->Subject = $subject;
////////// COSTRUISCE IL CORPO DELLA MAIL //////////
$body = "<font face=\"Verdana\" size=\"2\">".$msg_att[$attivo]."</font>";
$body2="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n<html>\n<head>\n<meta content=\"text/html;charset=ISO-8859-15\" http-equiv=\"Content-Type\">\n<title>" .
"Registrazione su $titolo</title>\n</head>\n<body>\n" .
"<div style=\"border: 2px solid silver; padding: 2px; font-family: Arial, Verdana; font-size: 12px; width: 500px;\">\n" .
" <div style=\"border: 1px solid #3FA9DE; padding: 2px;\">\n" .
" <div style=\"border: 2px solid silver; padding: 2px;\">" .
" <div style=\"text-align: center; padding-bottom: 5px;\">" .
" <img style=\"margin-top: 5px; border: 1px solid silver;\" src=\"http://www.miosito.eu/it/images_web/logo_mail.jpg\" alt=\"MIO SITO\">\n" .
" </div>" .
" <div>\n" .
" $body\n" .
" </div>" .
" </div>\n" .
" </div>\n" .
"</div>\n" .
"</body>\n</html>";
$mail->Body = $body2;
$mail->AltBody = strip_tags($body2);
$mail->AddAddress($to);
@$mail->Send();
$mail->SmtpClose();
unset($mail);

///////////////////////////////////////////////////////////////////////////////
 
vediamo se è la soluzione (spero), per eliox

se negli headers non c'è qualcosa che possa motivare la rimozione del messaggio

qusto e quello che vedo in una mia news inviatami (dopo averla salvata in htm)

HTML:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1">
<p>prova di invio</p><p style="font-size: 10px;">per non ricevere più ns news rispondi scrivendo <b>remove</b> o clic su:<br>
			to not recieve our news just ansewer writing <b>remove</b> or click on:<br>
			<a href="http://www.cat-web.eu/newsLetter/rimuovi.php?uns=4-8">REMOVE</a></p>

:hammer:
 
sono di nuovo me, ho guardato il codice e salvo questo

PHP:
$Emailmessaggio->SetLanguage('it','language/'); 
$Emailmessaggio->IsHTML(true); // email in formato HTML

il resto è uguale (comunque a libero e email.it non arrivano), secondo te è meglio toglierle?

p.s.
il corpo dell'email lo edito con fckeditor
 
credo sia meglio che posti il pezzo intero di codice così è + facile vedere cosa eventualmente nn va. Tieni presente che isHtml nn serve se poi imposti l'AltBody xkè automaticamente il messagio viene mandato come multipart cioè la parte text/html e quella text/plain. Devi leggere i sorgenti dei messaggi x vedere le intestazioni di quelli che arrivano. E' li che ci sono gli inghippi.
 
ecco il codice

PHP:
<?php

/*----------------FINE verifica VARIABILI DA INVIARE----------------------------------*/
/* prima di queste riga faccio delle verifiche sui dati da form es. validita email e campi obbligatori------------------------*/
/* prima di queste riga faccio delle verifiche sui dati da form------------------------*/

/*----------------includo la classe phpmailer------------------------------------------------*/
require "phpmailler/class.phpmailer.php";

/*----------------istanzio la classe---------------------------------------------------------*/

$Emailmessaggio = new PHPmailer();
$Emailmessaggio->SetLanguage('it','language/'); 
$Emailmessaggio->IsHTML(true); // email in formato HTML

$Emailmessaggio->FromName= $email_nome;//deriva da una select del form per varie categorie

$Emailmessaggio->AddAddress('info@borgo-italia.it');//in alcuni casi deriva da selezione db

$Emailmessaggio->Subject=$email_oggetto;
$Emailmessaggio->Body=$da_inviare;

/*selezione da db i vari indirizzi email select ecc.......*/

$conta=0;

while  ($riga=mysql_fetch_array($query)){

    $Emailmessaggio->From=$email_indirizzo;

    if($Emailmessaggio->Send()){ $conta++;}//conta puo arrivare circa a 7000
   echo "inviati :".$conta;
}//fine while


?>


mi sembra abbastanza simile al tuo, ma forse mi sbaglio
 
Ho fatto una ricerchina, provate ad impostare la proprietà Sender:
PHP:
$Emailmessaggio->Sender = "email@email.com";
Serve ad aggiungere il return-path nell’header, gli spammers in genere non lo mettono.

E visto che ci siete mettete anche AltBody dopo Body:
PHP:
$Emailmessaggio->Body=$da_inviare; 
$Emailmessaggio->AltBody="testo alternativo";

Tenete poi conto che Libero ha un servizio con tempi di attesa superiori rispetto ad altri, le mail potrebbero anche non arrivare subito.
 
il mittente, in questo modo il suo indirizzo è disponibile anche nelle intestazioni.
 
comincio a non capirci più nulla
questo è la porizone di codice



PHP:
	$invia_EM="SELECT * FROM email_infodisisc WHERE invia='1' ORDER BY id";
	//$invia_EM="SELECT * FROM ".$tabella." WHERE invia='1' ORDER BY id";
	$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
	$Emailmessaggio->From=$email_da; //email del mittente
	$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'];
			//echo $email_A."<br>";
			
			$Emailmessaggio->AddAddress=$email_A;
			
			if ($Emailmessaggio->Send())
    		{
      			$inviate++;
				
   			}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


nella tabella ho 4 indirizzi (verificati: il mio e quello di tre amici)
dando invio continua a darmi errore di trasmissione
la riga commentata echo $email_A."<br>";
mi scrive i quattro indirizzi
dove è l'errore??:confused:
 
Ultima modifica:
ecco ho (psedudo) risolto, comunque il problema è un altro, cosi eliox puo modificare il suo articolo

il primo errore ere qui
$Emailmessaggio->AddAddress=$email_A;
che deve essere scritto
$Emailmessaggio->AddAddress($email_A);
e sin qui non ci piove.
invita l'email di prova (4 indirizzi) ricevevo 6 e mail
dopo attenta analisi delle email ricevute mi accorgevo che es.
pinco@pallo.it
pallo@pinco.it
sempronio@pincopallo.it
pimcopallo@sempronio.it

ricevevo io pinco@pallo. it n. 4 e mail in quanto
aggiunge al campo cc (altra simile al campo ccn)

per cui ricevevo (per ogni giro di while)

pinco@pallo.it
pinco@pallo.it;pallo@pinco.it
pinco@pallo.it;pallo@pinco.it;sempronio@pincopallo.it
pinco@pallo.it;pallo@pinco.it;sempronio@pincopallo.it;pimcopallo@sempronio.it

quindi (nel mio caso) non è giusto usare

ma cosa devo mettere per reimepire solo il campo to: ?

ho guardato dentro la classe ma non ho capito

$Emailmessaggio->mailTO=$email_A;?????

mi sa che devo tornare alla vecchia mail(), ma se risolvo questo fatto tutto:mavieni:
non so se mi sono spiegato
 

Discussioni simili