Avatar billede flushout Nybegynder
29. oktober 2004 - 08:19 Der er 6 kommentarer og
1 løsning

Problem med MIME-mail class - vedr. navn på attachment

Hejsa

Jeg har fundet dette MIME mail sustem her på experten. Det virker helt fint, mailen bliver sendt og attachment bliver vedhæftet. Mit problem er, at den vedhæftede attachment ikke hedder 'advertising_com.xls' når jeg modtager filen. Istedet hedder den noget i stil med:

attunr6f.dat eller lignende.. et tilsyneladende tilfældigt navn, men altid med ".dat" bagefter.

Er der nogen der kan fortælle mig hvor jeg har lavet noget galt?

Nederst har jeg kopieret den kode jeg bruger til at kalde class'en:

-----------------

<?
/* 
*  Class mime_mail 
*  Original implementation by Sascha Schumann <sascha@schumann.cx> 
*  Modified by Tobias Ratschiller <tobias@dnet.it>: 
*      - General code clean-up 
*      - separate body- and from-property 
*      - killed some mostly un-necessary stuff
*/

class mime_mail {

    var $parts; 
    var $to; 
    var $from; 
    var $headers; 
    var $subject; 
    var $body; 

//    void mime_mail()  class constructor 
    function mime_mail() { 
      $this->parts = array(); 
      $this->to =  ""; 
      $this->from =  ""; 
      $this->subject =  ""; 
      $this->body =  ""; 
      $this->headers =  ""; 
    } 

//    void add_attachment(string message, [string name], [string ctype]) 
//    Add an attachment to the mail object 
    function add_attachment($message, $name = "", $ctype = "application/octet-stream") {
      $this->parts[] = array ("ctype" => $ctype,  "message" => $message,  "encode" => $encode,  "name" => $name);
    }

//    void build_message(array part=
//    Build message parts of an multipart mail
    function build_message($part){
        $message = $part[ "message"]; 
        $message = chunk_split(base64_encode($message)); 
        $encoding =  "base64"; 
        return  "Content-Type: ".$part[ "ctype"].($part[ "name"]? "; name = \"".$part[ "name"]. "\"" :  "")."\nContent-Transfer-Encoding: $encoding\n\n$message\n";
    }

//    void build_multipart()
//    Build a multipart mail
    function build_multipart() { 
        $boundary =  "b".md5(uniqid(time())); 
        $multipart =  "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary"; 
        for($i = sizeof($this->parts)-1; $i >= 0; $i--) { 
            $multipart .=  "\n".$this->build_message($this->parts[$i]). "--$boundary"; 
          }
        return $multipart.=  "--\n"; 
    }

//    void send()
//    Send the mail (last class-function to be called) 
    function send() { 
        $mime =  ""; 
        if (!empty($this->from)) 
            $mime .=  "From: ".$this->from. "\n"; 
        if (!empty($this->headers)) 
            $mime .= $this->headers. "\n"; 
        if (!empty($this->body)) 
            $this->add_attachment($this->body,"",  "text/plain");   
        $mime .=  "MIME-Version: 1.0\n".$this->build_multipart(); 
/*        echo $this->to."<br><br>";
        echo $this->subject."<br><br>";
        echo $mime."<br><br>";
        echo "END";
*/
        mail($this->to, $this->subject,  "", $mime);
    }

}; // end of class

----------------

    include "mail_builder.class";
   
    $attachment = fread(fopen("advertising_com.xls", "r"), filesize("advertising_com.xls")); 
       
    $mail = new mime_mail(); 
    $mail->from = "Emne fra advertising.com"; 
    $mail->headers = "Errors-To: min@mail.dk"; 
    $mail->to = "min$mail.dk"; 
    $mail->subject = "Emner fra Advertising.com bannere"; 
    $mail->body = "Hej navn\n\nHer er et excel ark med emner fra i går.\n\n"; 
    $mail->add_attachment("$attachment","advertising_com.xls","application/octet-stream"); 
    $mail->send();
Avatar billede flushout Nybegynder
29. oktober 2004 - 12:56 #1
Er der ingen der kan hjælpe??? :'(
Avatar billede Slettet bruger
29. oktober 2004 - 20:11 #2
Jeg mener OE altid kalder filen et eller andet med .dat, når MIME-type er sat til application/octet-stream

Prøv med application/vnd.ms-excel i stedet, og se om det hjælper.
Avatar billede flushout Nybegynder
01. november 2004 - 11:11 #3
Ok, det har jeg nu gjort og det virker fint når jeg modtager mailen i min yahoo mail. Men i notes kommer filen stadig som en .dat fil...

Kan det skyldes at MIME typen "application/vnd.ms-excel" ikke er sat i IMC'en på mit arbejde?

Jeg prøvede, for at teste dette at maile en .xls fil fra min yahoo mail til min notes mail på arbejdet, og den gik fint igennem så umiddelbart burde det jo virke?

Jeg må indrømme at jeg er jævnt forvirret over det her!?!?
Avatar billede Slettet bruger
01. november 2004 - 11:43 #4
Der kan i hvert fald ikke være tvivl om, at det er på modtagersiden, den er gal. Hvorvidt det så er klientprogrammet eller serveren, der laver fejlen kan jeg naturligvis ikke sige. Du kan prøve om en af disse afhjælper problemet:

application/vnd.msexcel
application/msexcel
application/ms-excel
application/x-msexcel
application/x-ms-excel
application/x-vnd.msexcel
application/x-vnd.ms-excel
Avatar billede flushout Nybegynder
01. november 2004 - 15:24 #5
ok. Det vil jeg kigge på. Hvis det ikke virker må jeg tage fat i min administrator og få ham til at kigge på om det kan være opsætningen af serveren der skaber problemet.

Tusind tak for hjælpen :)

Smid et svar så får du points!
Avatar billede flushout Nybegynder
01. november 2004 - 15:34 #6
application/x-ms-excel

den her virkede sgu :) :) :)

Navnet på filen er stadig noget rod, men nu er filetypen i det mindste korrekt!
Avatar billede Slettet bruger
01. november 2004 - 15:56 #7
Her kommer der så et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester