Problema invio allegati via mail con libero

Luca.Colonnello

Nuovo Utente
31 Mar 2011
4
0
0
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


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;
 }
 
}
?>
 

Luca.Colonnello

Nuovo Utente
31 Mar 2011
4
0
0
Scusate vi chiedo un favore.
Potreste controllare se nella classe c'è qualche errore nel creare la mail?
Ne ho bisogno perchè non capisco più come fare. Qualsiasi link ho visto non mi aiuta.
E adesso non ha funzionato con una mail diversa da libero.
Non capisco se è colpa del sender-ID non implementato con l'SPF del server mail di aruba, oppure se è un problema di codice o di creazione dell'email da parte della classe che ho creato.

Grazie ancora dell'aiuto fin'ora dato
 

Luca.Colonnello

Nuovo Utente
31 Mar 2011
4
0
0
Hai ragione però ho creato una mia libreria apposta per poterla controllare come volevo e gestire un template, poi non conoscevo questa libreria.

Preferirei onestamente risolvere anche solo per capire e imparare i problemi sulle mail.

Poi credo proprio che userò phpmailer, però almeno capirci qualcosa...

Cmq grazie lo stesso. Se però qualcuno sa come risolvere il problema mi farebbe cmq un piacere.
 
Discussioni simili
Autore Titolo Forum Risposte Data
cobra_72 [PHP] problema invio multiplo allegati mail PHP 21
L problema con invio allegati PHP 1
D Problema con invio allegati PHP 1
Daniele_Carrara Problema timeout - invio mail PHP 7
M [PHP] Problema script ricezione e invio posta... PHP 1
C [PHP] Problema Invio Email Elseif PHP 2
A [PHP] Problema invio mail con funzione mail() PHP 3
S Problema in PHP per invio file XML - RISOLTO- PHP 8
Punix [PHP] problema script invio e-mail PHP 2
S Problema invio form php/html PHP 3
R PROBLEMA INVIO EMAIL AL CAMBIO DI STATO ORDINE E-Commerce 1
L invio smtp con phpmailer - problema invia due volte la email allo stesso utente PHP 0
Il Matta Problema Form e invio mail PHP 2
asevenx problema invio email tramite form PHP 3
B Problema form mail per invio doppio allegato PHP 1
A Problema invio dati form contatti PHP 12
A Problema orario invio mail per form PHP 4
O [PHP] Problema Invio Mail PHP 2
D Problema modulo invio messaggio da sito web PHP 7
A Problema invio messaggio col form PHP 1
S Problema con invio dati PHP 0
P Problema di invio dati PHP 4
L Problema di invio "value" PHP 1
Task Mc Problema form invio email da sito ç__ç PHP 4
L problema invio newsletter con script proprio in php PHP 10
A problema invio mail PHP 5
Z Problema invio dati da textarea PHP 2
S Problema con l'invio del form in php PHP 0
F Problema form invio email php PHP 3
A Problema form invio dati PHP 2
T Problema invio dati ad altra pagina PHP 1
D Problema nell'invio dei dati di un form ad uno script AJAX Ajax 8
A problema con l'invio della password tramite email PHP 23
C problema invio mail con form php PHP 0
P Problema invio email da php PHP 9
J problema con apache2+php ed invio file con cURL Apache 2
J Problema invio file con cURL php su server verso server PHP 1
D Problema invio mail [GIA POSTATO ERRONEAMENTE IN HTML] PHP 0
D Problema invio mail PHP 6
LaKanka Problema invio e-mail, prima riga vuota PHP 0
C Mail e php problema invio PHP 11
V Problema con l'invio delle mail in locale (usando quindi easy php) PHP 16
S Problema invio mail da form Classic ASP 6
C Problema con il doppio invio nel form con onsubmit HTML e CSS 9
M problema script invio email multiplo PHP 8
Angel0 Problema invio e-mail (era: problemi con xoom) Posta Elettronica 4
B problema invio email PHP 7
B problema invio email PHP 7
H Problema invio e-mail in WebSite X5 Posta Elettronica 0
T Problema di invio dati AJAX-PHP Ajax 8

Discussioni simili