Salver a tutti,
sto' cercando di inviare un mail in formato HTML.
La invio utilizzando il codice mail. Questa è la classe che utilizzo:
Codice PHP:
<?
class eMail
{
var $to = array();
var $cc = array();
var $bcc = array();
var $attachment = array();
var $boundary = "";
var $header = "";
var $subject = "";
var $body = "";
function eMail($name,$mail)
{
$this->boundary = md5(uniqid(time()));
$this->header .= "From: $name <$mail>\n";
}
function to($mail)
{
$this->to[] = $mail;
}
function cc($mail)
{
$this->cc[] = $mail;
}
function bcc($mail)
{
$this->bcc[] = $mail;
}
function attachment($file)
{
$this->attachment[] = $file;
}
function subject($subject)
{
$this->subject = $subject;
}
function text($text)
{
$this->body = "Content-Type: text/plain; charset=ISO-8859-1\n";
$this->body .= "Content-Transfer-Encoding: 8bit\n\n";
$this->body .= $text."\n";
}
function html($html)
{
$this->body = "Content-Type: text/html; charset=ISO-8859-1\n";
$this->body .= "Content-Transfer-Encoding: quoted-printable\n\n";
$this->body .= "<html><body>\n".$html."\n</body></html>\n";
}
function send()
{
// CC Empfänger hinzufügen
$max = count($this->cc);
if($max>0)
{
$this->header .= "Cc: ".$this->cc[0];
for($i=1;$i<$max;$i++)
{
$this->header .= ", ".$this->cc[$i];
}
$this->header .= "\n";
}
// BCC Empfänger hinzufügen
$max = count($this->bcc);
if($max>0)
{
$this->header .= "Bcc: ".$this->bcc[0];
for($i=1;$i<$max;$i++)
{
$this->header .= ", ".$this->bcc[$i];
}
$this->header .= "\n";
}
$this->header .= "MIME-Version: 1.0\n";
$this->header .= "Content-Type: multipart/mixed; boundary=$this->boundary\n\n";
$this->header .= "This is a multi-part message in MIME format\n";
$this->header .= "--$this->boundary\n";
$this->header .= $this->body;
// Attachment hinzufügen
$max = count($this->attachment);
if($max>0)
{
for($i=0;$i<$max;$i++)
{
$file = fread(fopen($this->attachment[$i], "r"), filesize($this->attachment[$i]));
$this->header .= "--".$this->boundary."\n";
$this->header .= "Content-Type: application/x-zip-compressed; name=".$this->attachment[$i]."\n";
$this->header .= "Content-Transfer-Encoding: base64\n";
$this->header .= "Content-Disposition: attachment; filename=".$this->attachment[$i]."\n\n";
$this->header .= chunk_split(base64_encode($file))."\n";
$file = "";
}
}
$this->header .= "--".$this->boundary."--\n\n";
foreach($this->to as $mail)
{
mail($mail,$this->subject,"",$this->header);
}
}
}
?>
La cosa che non capisco ... se arriva a @virgilio.it @email.it OK, se arriva a @libero.it non visualizzo le immagini, guardo il corpo delle email e noto che mancano dei pezzi ( ad esempio src=http:// diventa src=ttp://) chi mi spiega il perchè? Oppure avete uno script testato che vada bene?
Dove sbaglio? E' un problema di codifica?
VVoVe:
=============
NOTA
=============
Il testo dell'email (che poi altro non è che una serie di tag HTML) arrivano alla pagina che richiama la classe mediante una form.