MIME-Mail Attachments

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MIME-Mail Attachments

    Hallo Leute!

    Es geht um MIME-Mails. Ich mache irgendwie noch einen Fehler bei der Trennung von plain-text und attachment. Bei Yahoo Mail kommt es folgendermaßen an:

    PHP-Code:
    DatumMon5 Aug 2002 15:48:41 +0200 
    Von
    "Nobody" <nobody@merkur.kasserver.com>  
    An: [email]kernsynthesewaffe@yahoo.de[/email
    BetreffBestandsprotokoll HTML von Vorname Name 

    MIME
    -Version 1.0
    Content
    -Typemultipart/mixedboundary="BOUND" 
    FromVorname Name - [email]name@name.de[/email]

    --
    BOUND
    Content
    -Typetext/plaincharset=iso-8859-
    Content
    -Dispositioninline 
    Content
    -Transfer-Encoding7bit 
    #### hier folgt der Textteil ####

    --BOUND
    Content
    -Typetext/htmlname="Bestandsprotokoll_Vorname"_"Name.htm" 
    Content-Description"Bestandsprotokoll" 
    Content-Transfer-Encodingbase64 
    Content
    -Dispositionattachment 
    ####  jetzt das Attachment als ASCII-Kauderwelsch ###

    DQo8Ym9keSBiZ2NvbG9yPSIjQzJDMkQ2Ij4NCjxkaXYgYWxpZ249ImNlbnRlciI+IA0KICA8cCBh....................und so weiter 
    mein code nach dem splitten und codieren lautet:

    PHP-Code:
    $empfaenger="kernsynthesewaffe@yahoo.de";
    $betreff="Bestandsprotokoll HTML von ".$vorname." ".$name;
    $nachricht="Datum und Uhrzeit dieses Protokolls: ".date("d.m.Y")." um ".date("H:i")."\r\n"
        
    ."Absender: ".$vorname." ".$name."\r\n Das Bestandsprotokoll folgt als Anhang an diese Mail!";
    $absender="From: ".$vorname." ".$name." - ".$email."\n";

    # Header 
    $header="MIME-Version 1.0\r\n"
        
    ."Content-Type: multipart/mixed; boundary=\"BOUND\" \r\n"
        
    ."$absender";

    # mailbody 
    $body="\r\n\r\n"

        
    ."--BOUND\r\n"
        
    ."Content-Type: text/plain; charset=iso-8859-1 \r\n"
        
    ."Content-Disposition: inline \r\n"
        
    ."Content-Transfer-Encoding: 7bit \r\n"
        
    ."\r\n"
        
    ."$nachricht \r\n"
        
    ."\r\n"

        
    ."--BOUND\r\n"
        
    ."Content-Type: text/html; name=\"Bestandsprotokoll_$vorname\"_\"$name.htm\" \r\n"
        
    ."Content-Description: \"Bestandsprotokoll\" \r\n"
        
    ."Content-Transfer-Encoding: base64 \r\n"
        
    ."Content-Disposition: attachment \r\n"
        
    ."\r\n"
        
    ."$attachment \r\n"
        
    ."\r\n"
        
    ."--BOUND \r\n";

    # Prüfvariable einrichten 
    $abgesendet=
    @
    mail($empfaenger$betreff$body$header); 
    Da wird doch alles sauber getrennt. das Komische ist, dass wenn ich statt die Mail zu verschicken, das Ergebnis mittels
    PHP-Code:
    $senden="$header"."$body"."$absender";
    $datei=fopen("Bestandsprotokoll.eml","w+");
    fputs($datei,$senden);
    fclose($datei); 
    in eine .eml-Datei schreib und die mit Outlook Express aufmache, wird das Attachment korrekt angezeigt. Bloß online funzt es nicht. Woran kann das liegen? Oder hat das was mit Yahoo zu tun? Aber dort werden Attachments doch auch normal angezeigt... *grübel*

    HE
    Zuletzt geändert von Highexplosive; 05.08.2002, 15:10.

  • #2
    Hi,

    Ich verstehe überhaupt nicht wie du mit der MIME-Mail umgehst. MIME funktioniert m.E. nur mit PEAR http://pear.php.net mit
    >>pear install Mail_mime-1.0.tgz in das Pear-Verzeichnis installieren um Mail() Funktionalität zu erweitern

    MIME Spezifikation RFC 2045-2049:
    www.ietf.org/rfc/rfc2045.txt
    ---www.ieft.org/rfc/rfc2049.txt--- 0190-Trap, wie geht den das?! - Vorsicht nur mit AntiTrojaner ausprobieren!!!!
    PHP-Code:
    // PHP mit MAIL_mime-Objekt
    // Senden von Attachments

    include ("Mail/mime.php");
    include (
    "Mail.php");
    $mime =new Mail_mime('$zeilenbruch'); // default \r\n dann Mail_mime();

    $body ="bla\nbla..";
    $to "dummdum@enkjrij.wrg";
    $defaultHeaders["From"] = "hdifid@dhfdj.tv";
    $defaultHeaders["Subjekt"] = "Blablabla";

    $mime->setTXTBody("Anrede,\nsehr geehrter Herr Blub" [, FALSE]) // False ~ Textbody, true ~ Dateiname

    $mime->addAttachment("url.format");
    // Attm. wird mit Content-Type "application/octet-stream" gesendet 
    // encoding mit Base64 (beides default)

    // vollständige Definition
    $mime->addAttachment($datei$contentType$dateiname$istDatei$encording );
    // $istDatei s. setTXTBody
    // $encording 7bit,8bit,base64 (default)
    // Wichtig 7bit nur f. ASCII-Datein (ohne) Umlaute
      
    $body = & $mime->get(array("text_encording"=>"quoted-printable")); 
    // Einstellung nötig um Umlaute mit reinzunehmen und über Plattformen zu transferieren
    $headers = & $mime->headers($defaultHeaders);

    $mail = & Mail::factory('mail');
    $mail->send($to$headers$body); 
    1) Du nutzt ISO-8859-1 welche Umlaute u. a. enthält. Das heißt du musst die Defaulteinstellungen anpassen.
    2) Outlook ist deshalb in der Lage den Kramm zu lesen, weil das Betriebssystem die Defaulteinstellungen anpasst.

    Literaturhinweis:
    www.php-de-luxe.ch

    Hoffe, konnte dir helfen

    cu

    Blaster
    Zuletzt geändert von Blaster; 05.08.2002, 20:42.
    Yuppi, endlich Elite ...

    Kommentar

    Lädt...
    X