
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>informatica&#38;tlc.it - Blog &#187; gmail</title>
	<atom:link href="http://www.informaticaetlc.it/blog/tag/gmail/feed" rel="self" type="application/rss+xml" />
	<link>http://www.informaticaetlc.it/blog</link>
	<description>Portale dedicato all&#039;informatica e alle telecomunicazioni</description>
	<lastBuildDate>Fri, 12 Aug 2011 20:49:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Invio di newsletter in PHP e gestione dello spam</title>
		<link>http://www.informaticaetlc.it/blog/invio-di-newsletter-in-php-e-gestione-dello-spam.html</link>
		<comments>http://www.informaticaetlc.it/blog/invio-di-newsletter-in-php-e-gestione-dello-spam.html#comments</comments>
		<pubDate>Sat, 10 Jul 2010 09:35:17 +0000</pubDate>
		<dc:creator>ilos37</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[allegati]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[hotmail]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[newsletter]]></category>
		<category><![CDATA[phpmailer]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://www.informaticaetlc.it/blog/?p=72</guid>
		<description><![CDATA[In questo articolo vedremo come inviare in maniera semplice e veloce delle mail con la classe PHPMailer e cosa fare per evitare che esse vengano viste come spam dai vari filtri antispam presenti sugli account di posta.]]></description>
			<content:encoded><![CDATA[<p>In questi giorni mi sono trovato a risolvere un problema non di poco conto: le mail inviate come <em>newsletter </em>da alcuni siti vengono viste dai riceventi come <em>spam</em>. Ciò era dovuto, nella maggior parte dei casi, alla mancanza di alcuni <em>header </em>nelle impostazioni della mail. Purtroppo non tutti i problemi si sono risolti; infatti, su <strong>yahoo </strong>e, soprattutto, <strong>hotmail </strong>le mail venivano viste ancora come posta indesiderata, mentre l&#8217;invio su account come <strong>gmail</strong>, <strong>libero </strong>e <strong>alice </strong>non davano alcun problema. Ma procediamo con ordine e analizziamo il codice per l&#8217;invio delle mail.</p>
<p>Utilizziamo la classe <strong><a title="PHPMailer" href="http://phpmailer.worxware.com/" target="_blank">PHPMailer </a></strong>per gestire in modo estremamente semplice l&#8217;invio delle mail. Per utilizzarla scarichiamo il pacchetto e inseriamo all&#8217;interno del nostro codice il file <em>class.phpmailer.php</em>:</p>
<pre class="brush:php;">require_once("include/class.phpmailer.php");</pre>
<p>dopodiché si procede con l&#8217;inserimento delle varie opzioni:</p>
<pre class="brush:php;">
$mail = new PHPMailer();
$mail-&gt;IsSMTP();                    // attiva l'invio tramiteSMTP
$mail-&gt;Host     = "vostro.server.smtp"; // indirizzo smtp
$mail-&gt;From     = "vostra@mail.com";
$mail-&gt;FromName = "Vostro nome";
$mail-&gt;AddReplyTo('vostra-mail@reply.com');
$mail-&gt;Sender = "vostra@mail.com";
$mail-&gt;AddAddress(mail@destinatario.com);
$mail-&gt;IsHTML(true);
$mail-&gt;Subject  =  "Oggetto della mail";
$mail-&gt;Body     =  "Corpo della mail";
if(!$mail-&gt;Send()){
echo "Si è verificato un errore nell'invio della mail";
}
</pre>
<p>Il codice è molto semplice, si istanzia un oggetto della classe in questione e abilitiamo l&#8217;invio tramite <strong>SMTP </strong>attraverso il metodo <em>IsSMTP().</em> Si inseriscono i propri dati per completare le intestazioni e l&#8217;indirizzo del destinatario della mail; con il metodo <em>IsHTML(true) </em>impostiamo l&#8217;invio della mail come <em>text/html</em> così da poter inserire i tag html per gestire il formato della mail (ovviamente se è una mail di solo testo si può omettere, anzi è consigliabile come vedremo dopo). Dopo aver inserito l&#8217;oggetto e il corpo si effettua l&#8217;invio tramite il metodo <em>Send()</em>.</p>
<p>Sulla classe PHPMailer ci sono da dire altre 2 cose importanti: tramite di essa si posso inviare email anche tramite server SMTP che richiedono l&#8217;autenticazione inserendo i seguenti parametri:</p>
<pre class="brush:php;">
$mail-&gt;Username =  "username del server SMTP"; //di solito la mail utilizzata
$mail-&gt;Password = 'password'; //di solito la password della mail
$mail-&gt;SMTPAuth = true;
</pre>
<p>oppure inserire degli allegati attraverso il parametro:</p>
<pre class="brush:php;">
$mail-&gt;AddAttachment("filename_1.zip");
</pre>
<p>Anche se in maniera breve, abbiamo fatto una panoramica abbastanza esauriente sull&#8217;utilizzo della classe PHPMailer. Con le impostazioni viste sono riuscito a non avere molti problemi con i vari gestori di account di posta che analizzano principalmente le intestazioni con i loro filtri antispam. Purtroppo è il livello del filtro che fa si che la nostra email sia considerata come spam oppure no. Di solito vi è un indice numerico che stabilisce un livello massimo di tolleranza e ogni &#8220;imprecisione&#8221; o &#8220;problema&#8221; rilevato sui vari parametri della mail (intestazione, oggetto, corpo&#8230;) incide per un valore in base alla gravità. Se la somma di tali valori supera il livello massimo di tolleranza l&#8217;email verrà vista come spam.</p>
<p>Se la vostra mail è puro testo non ci dovrebbero essere molti problemi avendo tutte le impostazioni apposto, al contrario, invece, se la mail contiene codice html, i filtri antispam sono molto più restrittivi soprattutto in presenza di immagini. Per cercare di non incorrere in penalizzazioni bisogna inserire un codice html il più possibile <strong>pulito </strong>e <strong>accessibile</strong>. Bisogna inserire tutti i tag in ordine con la relativa chiusura secondo la struttura</p>
<pre class="brush:html;">
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /&gt;
&lt;title&gt;Title della mail&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;!-- Corpo della mail --&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>All&#8217;interno del body possiamo inserire tutti i tag che ci servono per formattare come meglio crediamo la mail (&lt;p&gt;, &lt;table&gt; ecc..) ricordandoci 3 importanti accorgimenti:</p>
<ol>
<li>se inseriamo immagini inseriamo SEMPRE gli attributi <strong>alt </strong>e <strong>title</strong>;</li>
<li>l&#8217;attributo <strong>title</strong> va inserito anche nei link inseriti attraverso il tag &lt;a&gt;;</li>
<li>se inseriamo immagini e/o molti tag html dobbiamo inserire anche abbastanza testo; da prove da me effettuate  una mail con anche solo un&#8217;immagine all&#8217;interno e poco testo viene penalizzata, mentre se il testo è abbastanza passa più facilmente senza penalizzazioni.</li>
</ol>
<p>Rispettando queste semplici regole sono riuscito a far pervenire, anche a utenti hotmail, la mail senza che il filtro antispam la taggasse come spam. Naturalmente in molti account è possibile personalizzare la sensibilità del filtro che potrebbe dare problemi anche con accorgimenti più accurati.</p>
<p>L&#8217;ultimo argomento dell&#8217;articolo riguarda l&#8217;analisi di una mail taggata come spam se l&#8217;accout ci fornisce le informazioni sulle penalizzazioni effettuate dal filtro antispam. Alcuni account (come gli account  email creati su aruba, ad esempio) ci forniscono tali informazioni. Vediamo un esempio pratico di una mail taggata come spam:</p>
<pre class="chili"><code class=""""""""""""""""""">
Content analysis details:   (5.2 points, 5.0 required)
pts rule name              description
---- ---------------------- ------------------------------
--------------------
-0.0 NO_RELAYS              Informational: message was not relayed via  SMTP
0.0 HTML_MESSAGE           BODY: HTML included in message
1.7 MIME_HTML_ONLY         BODY: Message only has text/html MIME parts
2.5 HTML_IMAGE_ONLY_16     BODY: HTML: images with 1200-1600 bytes of  words
1.1 HTML_MIME_NO_HTML_TAG  HTML-only message, but there is no HTML tag
-0.0 NO_RECEIVED            Informational: message has no Received  headers</code></pre>
<div>Questa situazione ci informa che il filtro è impostato su una sensibilità massima pari a 5.0 (5.0 required) ma l&#8217;email ha riportato un punteggio di 5.2 (5.2 points). Dall&#8217;analisi si evince che la mail era stata impostata im maniera errata, dove mancavano i tag più importanti come il tag &lt;html&gt; (&#8221;1.1 HTML_MIME_NO_HTML_TAG  HTML-only message, but there is no HTML tag&#8221;), era formata in gran parte da codice html con poco testo (&#8221;1.7 MIME_HTML_ONLY BODY: Message only has text/html MIME parts&#8221;) e il testo era insufficiente anche rispetto alle immagini inserite (2.5 HTML_IMAGE_ONLY_16 BODY: HTML: images with 1200-1600 bytes of   words). Per informazioni più dettagliate sui vari tipi di errore si veda il seguente <a href="http://spamassassin.apache.org/tests_3_3_x.html">link</a> aggiornato alla versione 3.3 che è quella più aggiornata al momento della scrittura dell&#8217;articolo.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.informaticaetlc.it/blog/invio-di-newsletter-in-php-e-gestione-dello-spam.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

