Layer 06

Spedire una mail in HTML con php

I filtri antispam permettono di evitare di scaricare le mail che sono etichettate come spam, ma come fanno ad etichettarle come spam? Utilizzano un meccanismo di controllo sugli header. Tanto più una mail è completa negli heaqder tanto più la mail non verrà etichettata come spam.
Per chi ha una newsletter è importante che la mail venga recapitata nel modo più giusto possibile.
Con PHP con la funzione mail() (manuale ufficiale da php.net della fuinzione mail() per riferimenti sul suo utilizzo) è possibile spedire mail, ma farlo nel modo giusto è un’altra cosa :-).

Per spedire una mail semplice in php basterebbe uno script così:

<?php
mail("pippo@example.com", "Oggetto", "Linea 1 Linea 2 Linea 3");
?>

Verrà spedita una mail in simple text a pippo@example.com. Purtroppo questo script purtroppo però verrà bloccato dal 90% dei filtri antispam… per ovviare al problema basta aggiungere degli header validi per i mail relay.
A tal proposito ho ideato questo script pescando informazioni di qua e di la tra i vari esempi in giro per la rete, ho voluto però aggiungere il supporto HTML per formattare per benino la mail:

<?

$org_var="Enrico – noreply";
$mail="noreply@etechs.it";
$emailto="pippo@example.com";
$content=" testo formnattato in HTML standard<br>&nbsp;&nbsp;&nbsp; prova prova ah ah ah<br><br> larsen<br>"; $content = STR_REPLACE("<PRE>","<p>",$content);
$content = STR_REPLACE("</PRE>","</p>",$content);
$content = STR_REPLACE("<XMP>","",$content);
$content = STR_REPLACE("</XMP>","",$content);
$content = stripslashes($content);
$content = STR_REPLACE("’","&#146",$content);

$body = "<html><body> ".$content." </body></html>";

$header = "MIME-Version: 1.0 ";
$header .= "Content-type: text/html; charset=iso-8859-1 ";
$header .= "Organization: ".$org_var." ";
$header .= "Content-Transfer-encoding: 8bit ";
$header .= "To: ".$emailto." ";
$header .= "From: ".$org_var." <".$mail."> ";
$header .= "Reply-To: ".$org_var." <".$mail."> ";
$header .= "Message-ID: <".md5(uniqid(time()))."@{$_SERVER[‘SERVER_NAME’]}> ";
$header .= "Return-Path: ".$mail." ";
$header .= "X-Priority: 1 ";
$header .= "X-MSmail-Priority: High ";
$header .= "X-Mailer: Microsoft Office Outlook, Build 11.0.5510 "; //hotmail and others dont like PHP mailer.
$header .= "X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441 ";
$header .= "X-Sender: ".$mail." ";
$header .= "X-AntiAbuse: This is a solicited email for – ".$org_var." mailing list. ";
$header .= "X-AntiAbuse: Servername – {$_SERVER[‘SERVER_NAME’]} ";
$header .= "X-AntiAbuse: User – ".$mail." ";
$bodyToSend=$body;
?>

A questo punto basta lanciare la funzione mail ed il gioco è fatto.

<?
mail (”,$oggetto,$bodyToSend,$header);
?>

LE informazioni aggiunte sono molte ma le più importanti sono Message-ID, X-AntiAbuse, X-Sender, X-Mime il resto sono tutti di corollario.

]]>

Nessun commento “Spedire una mail in HTML con php”