Ciao a tutti sono nuovo di quì! Complimenti per il forum è molto comodo.
Io ho il seguente problema con l'invio di mail tramite php.
Ho creato una classe per l'invio che prevede anche l'invio di allegati.
La funzione interessata è _addAttech($messaggio,$attech), ho postato tutto lo stesso se dovesse servire.
Su libero mail non si vede l'allegato non è nemmeno segnalato (solo visibile che è presente un allegato nella lista, ma aprendo l'email non c'è nessun allegato).
In libero mail versione classica invece mi compare come allegato BodyPart.txt
Vi chiedo di esaminare solo quella funzione (se necessario in base al codice intorno), ne avrei davvero bisogno! GRAZIE IN ANTICIPO
Io ho il seguente problema con l'invio di mail tramite php.
Ho creato una classe per l'invio che prevede anche l'invio di allegati.
La funzione interessata è _addAttech($messaggio,$attech), ho postato tutto lo stesso se dovesse servire.
Su libero mail non si vede l'allegato non è nemmeno segnalato (solo visibile che è presente un allegato nella lista, ma aprendo l'email non c'è nessun allegato).
In libero mail versione classica invece mi compare come allegato BodyPart.txt
Vi chiedo di esaminare solo quella funzione (se necessario in base al codice intorno), ne avrei davvero bisogno! GRAZIE IN ANTICIPO
PHP:
<?php
/**
*****************************************************
* PHP MAILER CLASS
*****************************************************
* @Author: Luca Colonnello
* @Email: [email protected]
* @Date: 01/02/2011
*****************************************************
* @Description: Classe per l'invio di mail html
* e testuale con allegati.
*****************************************************
* @Example:
*
require_once("mailsender.class.php");
$m_s=new mailsender("[email protected]", "Luca Colonnello", null, null);
$c="<html>
<body>
<b style=\"color:red;\">CIAO DA LUCA</b>
</body>
</html>";
$r=$m_s->sendmail("[email protected]",null,"Prima mail prova",$c,null);
echo $r;
*
**/
class mailsender
{
public $sender="";
public $mailer="";
public $boundary1="";
public $boundary2="";
public $startTPL="<html><head></head><body>";
public $endTPL="</body></html>";
//MIME Types List Array
public $mime_types = array("323" => "text/h323",
"acx" => "application/internet-property-stream",
"ai" => "application/postscript",
"aif" => "audio/x-aiff",
"aifc" => "audio/x-aiff",
"aiff" => "audio/x-aiff",
"asf" => "video/x-ms-asf",
"asr" => "video/x-ms-asf",
"asx" => "video/x-ms-asf",
"au" => "audio/basic",
"avi" => "video/x-msvideo",
"axs" => "application/olescript",
"bas" => "text/plain",
"bcpio" => "application/x-bcpio",
"bin" => "application/octet-stream",
"bmp" => "image/bmp",
"c" => "text/plain",
"cat" => "application/vnd.ms-pkiseccat",
"cdf" => "application/x-cdf",
"cer" => "application/x-x509-ca-cert",
"class" => "application/octet-stream",
"clp" => "application/x-msclip",
"cmx" => "image/x-cmx",
"cod" => "image/cis-cod",
"cpio" => "application/x-cpio",
"crd" => "application/x-mscardfile",
"crl" => "application/pkix-crl",
"crt" => "application/x-x509-ca-cert",
"csh" => "application/x-csh",
"css" => "text/css",
"dcr" => "application/x-director",
"der" => "application/x-x509-ca-cert",
"dir" => "application/x-director",
"dll" => "application/x-msdownload",
"dms" => "application/octet-stream",
"doc" => "application/msword",
"dot" => "application/msword",
"dvi" => "application/x-dvi",
"dxr" => "application/x-director",
"eps" => "application/postscript",
"etx" => "text/x-setext",
"evy" => "application/envoy",
"exe" => "application/octet-stream",
"fif" => "application/fractals",
"flr" => "x-world/x-vrml",
"gif" => "image/gif",
"gtar" => "application/x-gtar",
"gz" => "application/x-gzip",
"h" => "text/plain",
"hdf" => "application/x-hdf",
"hlp" => "application/winhlp",
"hqx" => "application/mac-binhex40",
"hta" => "application/hta",
"htc" => "text/x-component",
"htm" => "text/html",
"html" => "text/html",
"htt" => "text/webviewhtml",
"ico" => "image/x-icon",
"ief" => "image/ief",
"iii" => "application/x-iphone",
"ins" => "application/x-internet-signup",
"isp" => "application/x-internet-signup",
"jfif" => "image/pipeg",
"jpe" => "image/jpeg",
"jpeg" => "image/jpeg",
"jpg" => "image/jpeg",
"js" => "application/x-javascript",
"latex" => "application/x-latex",
"lha" => "application/octet-stream",
"lsf" => "video/x-la-asf",
"lsx" => "video/x-la-asf",
"lzh" => "application/octet-stream",
"m13" => "application/x-msmediaview",
"m14" => "application/x-msmediaview",
"m3u" => "audio/x-mpegurl",
"man" => "application/x-troff-man",
"mdb" => "application/x-msaccess",
"me" => "application/x-troff-me",
"mht" => "message/rfc822",
"mhtml" => "message/rfc822",
"mid" => "audio/mid",
"mny" => "application/x-msmoney",
"mov" => "video/quicktime",
"movie" => "video/x-sgi-movie",
"mp2" => "video/mpeg",
"mp3" => "audio/mpeg",
"mpa" => "video/mpeg",
"mpe" => "video/mpeg",
"mpeg" => "video/mpeg",
"mpg" => "video/mpeg",
"mpp" => "application/vnd.ms-project",
"mpv2" => "video/mpeg",
"ms" => "application/x-troff-ms",
"mvb" => "application/x-msmediaview",
"nws" => "message/rfc822",
"oda" => "application/oda",
"p10" => "application/pkcs10",
"p12" => "application/x-pkcs12",
"p7b" => "application/x-pkcs7-certificates",
"p7c" => "application/x-pkcs7-mime",
"p7m" => "application/x-pkcs7-mime",
"p7r" => "application/x-pkcs7-certreqresp",
"p7s" => "application/x-pkcs7-signature",
"pbm" => "image/x-portable-bitmap",
"pdf" => "application/pdf",
"pfx" => "application/x-pkcs12",
"pgm" => "image/x-portable-graymap",
"pko" => "application/ynd.ms-pkipko",
"pma" => "application/x-perfmon",
"pmc" => "application/x-perfmon",
"pml" => "application/x-perfmon",
"pmr" => "application/x-perfmon",
"pmw" => "application/x-perfmon",
"pnm" => "image/x-portable-anymap",
"pot" => "application/vnd.ms-powerpoint",
"ppm" => "image/x-portable-pixmap",
"pps" => "application/vnd.ms-powerpoint",
"ppt" => "application/vnd.ms-powerpoint",
"prf" => "application/pics-rules",
"ps" => "application/postscript",
"pub" => "application/x-mspublisher",
"qt" => "video/quicktime",
"ra" => "audio/x-pn-realaudio",
"ram" => "audio/x-pn-realaudio",
"ras" => "image/x-cmu-raster",
"rgb" => "image/x-rgb",
"rmi" => "audio/mid",
"roff" => "application/x-troff",
"rtf" => "application/rtf",
"rtx" => "text/richtext",
"scd" => "application/x-msschedule",
"sct" => "text/scriptlet",
"setpay" => "application/set-payment-initiation",
"setreg" => "application/set-registration-initiation",
"sh" => "application/x-sh",
"shar" => "application/x-shar",
"sit" => "application/x-stuffit",
"snd" => "audio/basic",
"spc" => "application/x-pkcs7-certificates",
"spl" => "application/futuresplash",
"src" => "application/x-wais-source",
"sst" => "application/vnd.ms-pkicertstore",
"stl" => "application/vnd.ms-pkistl",
"stm" => "text/html",
"svg" => "image/svg+xml",
"sv4cpio" => "application/x-sv4cpio",
"sv4crc" => "application/x-sv4crc",
"t" => "application/x-troff",
"tar" => "application/x-tar",
"tcl" => "application/x-tcl",
"tex" => "application/x-tex",
"texi" => "application/x-texinfo",
"texinfo" => "application/x-texinfo",
"tgz" => "application/x-compressed",
"tif" => "image/tiff",
"tiff" => "image/tiff",
"tr" => "application/x-troff",
"trm" => "application/x-msterminal",
"tsv" => "text/tab-separated-values",
"txt" => "text/plain",
"uls" => "text/iuls",
"ustar" => "application/x-ustar",
"vcf" => "text/x-vcard",
"vrml" => "x-world/x-vrml",
"wav" => "audio/x-wav",
"wcm" => "application/vnd.ms-works",
"wdb" => "application/vnd.ms-works",
"wks" => "application/vnd.ms-works",
"wmf" => "application/x-msmetafile",
"wps" => "application/vnd.ms-works",
"wri" => "application/x-mswrite",
"wrl" => "x-world/x-vrml",
"wrz" => "x-world/x-vrml",
"xaf" => "x-world/x-vrml",
"xbm" => "image/x-xbitmap",
"xla" => "application/vnd.ms-excel",
"xlc" => "application/vnd.ms-excel",
"xlm" => "application/vnd.ms-excel",
"xls" => "application/vnd.ms-excel",
"xlt" => "application/vnd.ms-excel",
"xlw" => "application/vnd.ms-excel",
"xof" => "x-world/x-vrml",
"xpm" => "image/x-xpixmap",
"xwd" => "image/x-xwindowdump",
"z" => "application/x-compress",
"zip" => "application/zip");
// Constructor
public function mailsender($sender,$mailer,$tplstart,$tplend)
{
//imposto l'indirizzo email
$this->sender=$sender;
//imposto il nome del inviante
$this->mailer=$mailer;
//template inizio
if(isset($tplstart) && $tplstart!="")
$this->startTPL=$this->_openFile($tplstart);
//template fine
if(isset($tplend) && $tplend!="")
$this->endTPL=$this->_openFile($tplend);
}
//open file
public function _openFile($fn)
{
$allegato = $fn;
$file = fopen($allegato,'rb');
$data = fread($file,filesize($allegato));
fclose($file);
return $data;
}
//get file exstension by name
public function _fileExstensionByName($fn)
{
$fn=explode($fn,".");
return $fn[count($fn)-1];
}
//create header
public function _createHeader($cc)
{
// costruiamo alcune intestazioni generali
$header = "From: ".$this->mailer." <".$this->sender.">\n";
if(isset($cc) && $cc!="")
$header .= "CC: $c <".$c.">\n";
$header .= "X-Mailer: ".$this->mailer."\n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/related;\n";
$header .= " type=\"multipart/alternative\";\n";
$header .= " boundary=\"".$this->boundary1."\";\n\n";
return $header;
}
//create separator
public function _createBoundary()
{
$this->boundary1 = "==String_Boundary_x" .md5(time()). "x";
$this->boundary2 = "==String_Boundary2_y" .md5(time()). "y";
}
//create content
public function _createContent($content)
{
$messaggio = "Se visualizzi questo testo il tuo programma non supporta i MIME\n\n";
// il primo segmento del multipart/related
// è definito come multipart/alternative
$messaggio .= "--".$this->boundary1."\n";
$messaggio .= "Content-Type: multipart/alternative;\n";
$messaggio .= " boundary=\"".$this->boundary2."\";\n\n";
// sezione alternativa in puro testo
$messaggio .= "--".$this->boundary2."\n";
$messaggio .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$messaggio .= "Content-Transfer-Encoding: 7bit\n\n";
$messaggio .= strip_tags($content,"")."\n\n"; //messaggio testuale senza html
// sezione alternativa in formato html
$messaggio .= "--".$this->boundary2."\n";
$messaggio .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$messaggio .= "Content-Transfer-Encoding: 7bit\n\n";
$messaggio .= $this->startTPL.$content.$this->endTPL."\n"; //messaggio html con tpl
// chiusura della sezione multipart/alternative
$messaggio .= "--".$this->boundary2."--\n";
return $messaggio;
}
//Add attechment
public function _addAttech($messaggio,$attech) //$m messaggio, $a array alegati[]{['path']=>pathtofile | ['descrizione']=>nomefile}
{
if(isset($attech) && count($attech)>0)
{
foreach($attech as $a)
{
$messaggio .= "--".$this->boundary1."\n";
$filename=explode("/",$a['path']);
$filename=$filename[count($filename)-1];
// seconda sezione del multipart/related contenente allegati
$messaggio .= "Content-Disposition: attachment;\n";
/*$messaggio .= "Content-ID: <".$a['descrizione'].">\n";*/
$messaggio .= " filename=\"".$filename."\"\n";
$messaggio .= "Content-Type: ".$this->mime_types[$this->_fileExstensionByName($a['path'])]."\n";
$messaggio .= "Content-Transfer-Encoding: base64\n\n";
//apro il messaggio
$data=$this->_openFile($a['path']);
//conversione base64_encode
$data = chunk_split(base64_encode($data));
$messaggio .= $data."\n\n";
}
}
return $messaggio;
}
public function _closeMultipart($messaggio)
{
// chiusura della sezione multipart/related
$messaggio .= "--".$this->boundary1."--\n";
return $messaggio;
}
//sendmail function
public function sendmail($to,$cc,$subj,$content,$attech)
{
//debug
//ini_set("SMTP","smtp.gmail.com");
$this->_createBoundary(); //crea separatori
$header=$this->_createHeader($cc); //crea header
$messaggio=$this->_createContent($content); //crea contenuto
$messaggio=$this->_addAttech($messaggio,$attech); //aggiunge al contenuto gli allegati
$messaggio=$this->_closeMultipart($messaggio); //chiude il multipart related
if(mail($to, $subj, $messaggio, $header)) //invia email
return true;
else
return false;
}
}
?>