
<?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; mail</title>
	<atom:link href="http://www.informaticaetlc.it/blog/tag/mail/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>
		<item>
		<title>Validare campi di input con php e le espressioni regolari</title>
		<link>http://www.informaticaetlc.it/blog/validare-campi-di-input-con-php.html</link>
		<comments>http://www.informaticaetlc.it/blog/validare-campi-di-input-con-php.html#comments</comments>
		<pubDate>Fri, 01 Jan 2010 20:19:56 +0000</pubDate>
		<dc:creator>ilos37</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[codice fiscale]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[espressioni regolari]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[partita iva]]></category>
		<category><![CDATA[pattern]]></category>

		<guid isPermaLink="false">http://www.informaticaetlc.it/blog/?p=39</guid>
		<description><![CDATA[In questo breve articolo vedremo come validare alcune stringhe attraverso le espressioni regolari di php. In particolare vedremo come controllare l'esattezza (semantica) del codice fiscale, dell'email e della partita IVA.]]></description>
			<content:encoded><![CDATA[<p>Molto spesso ci si trova a dover lavorare su campi di input e controllarne l&#8217;esattezza. In questo articolo vedremo come validare, tramite le espressioni regolari, tre tipi di dato che spesso si trovano nei form delle pagine html, ovvero l&#8217;email, il codice fiscale e la partita IVA. Il controllo che viene effettuato non controlla che essi siano corrispondenti a verità, ad esempio, non verifica che l&#8217;email esista, ma solo che è scritta nel formato corretto.</p>
<p>Per prima cosa impostiamo l&#8217;espressione per il controllo sotto forma di funzione:</p>
<pre class="brush:php;"> function controlla($stringa)  {
  $pattern="...."; //vedremo tra poco cosa inserire
  if(preg_match($pattern, trim($stringa)))
    return true;
  else
    return false;
}</pre>
<p>Come si può notare la funzione è di tipo booleano, restituisce <code>true</code> se la stringa è conforme a un modello predefinito (pattern) altrimenti restituisce <code>false</code>. Quello che inseriremo nella variabile <code>$pattern</code> dipenderà dal tipo di controllo che vogliamo effettuare. Per effettuare il controllo sull&#8217;indirizzo email la variabile dovrà essere del tipo:</p>
<pre class="brush:php;">$pattern="^([a-z0-9_\.-])+@(([a-z0-9_-])+\\.)+[a-z]{2,6}$";</pre>
<p>per il codice fiscale il pattern sarà:</p>
<pre class="brush:php;">$pattern="^[a-zA-Z]{6}[0-9]{2}[a-zA-Z][0-9]{2}[a-zA-Z][0-9]{3}[a-zA-Z]$";</pre>
<p>mentre, infine, per validare una partita IVA il pattern sarà:</p>
<pre class="brush:php;">$pattern="^[0-9]{11}$";</pre>
<p>Per effettuare il controllo basterà una semplice condizione:</p>
<pre class="brush:php;">if(controlla($dato)){
echo "email/cf/piva corretti";
else
echo "Ricontrolla i dati";</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.informaticaetlc.it/blog/validare-campi-di-input-con-php.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

