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!
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Purtroppo non è un problema che dipende da PHP o da Sendmail, si tratta di un blocco dovuto all'antispam di Libero.
 

Troublesome 80'

Nuovo Utente
6 Ott 2008
4
0
0
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?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
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:
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
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.
 

Troublesome 80'

Nuovo Utente
6 Ott 2008
4
0
0
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);

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

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
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:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
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
 

Troublesome 80'

Nuovo Utente
6 Ott 2008
4
0
0
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.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
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
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
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.
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
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