MIME Mail Problem

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

  • MIME Mail Problem

    Ich habe eine kleine Webapplikation entworfen, die aus einem Formular eine Email generiert und verschickt. Es handelt sich dabei um eine HTML Email mit 1 oder 2 Bilddateianhängen.

    Ich habe mir grösste Mühe gegeben und sorgfälltig recherchiert, um sauberen MIME-Code zu schreiben. Dennoch habe ich ein recht merkwürdiges Problem:

    Die so generierten Emails sind problemlos lesbar mit jedem Outlook.
    Doch derjenige, für den ich das gemacht habe, verwendet eine Komplettlösung names "FlowFact" um Emails zu empfangen und zu lesen.

    Und mit diesem Email Client entsteht genau dann ein Problem, wenn die Email 2 Bilder angehängt hat. Wenn nur 1 Bild angehängt ist, klappt alles wunderbar, aber sobald ein zweites dranhängt, wird der HTML-Teil nicht mehr als HTML erkannt, sondern einfach ein blank screen angezeigt. Erst wenn man den raw code anschaut, sieht man wieder die Daten (welche also vorhanden sind, nur nicht als HTML erkannt werden).

    Da es mir völlig rätselhaft ist woran das liegen kann und vor allem wo der Zusammenhang mit einem 2ten Bild und dem HTML-Teil liegt stelle ich hier das relevante Code-Stück zur Verfügung und hoffe, dass jemand den Fehler findet, der mir verborgen bleibt (bzw. wenn kein Fehler in meinem Code ist, habe ich die Sicherheit dass es an FlowFact liegt).

    ...
    PHP-Code:
    $grenze="**************************";
    $name_des_bildes=$bildname;
    $headers="From: [email]admin@bweckmann.de[/email]\n";
    $headers.="MIME-Version: 1.0\n";
    $headers.="Content-Type: multipart/mixed; boundary=$grenze\n";

    // HTML-Teil

    $botschaft="\n--$grenze\n";
    $botschaft.="Content-type: text/html\n";
    $botschaft.="Content-transfer-encoding: 7BIT\n\n";
    $botschaft.= "$inhalt\n\n";

    // 1. Bild

    $botschaft.="--$grenze\n";
    $botschaft.="Content-Type: application/octetstream;\n\tname=$name_des_bildes\n";
    $botschaft.="Content-Transfer-Encoding: base64\n";
    $botschaft.="Content-Disposition: attachment;\n\tfilename=$name_des_bildes\n\n";
    $zeiger_auf_datei=fopen("images/temp/$bildname","rb");
    $inhalt_der_datei=fread($zeiger_auf_datei,filesize("images/temp/$bildname"));
    fclose($zeiger_auf_datei);
    $inhalt_der_datei=chunk_split(base64_encode($inhalt_der_datei));
    $botschaft.=$inhalt_der_datei;
    $botschaft.="\n\n";

    // 2. Bild (nur wenn $logoname existiert)

    $botschaft.="--$grenze\n";
    if (
    $logoname){
    $botschaft.="Content-Type: application/octetstream;\n\tname=$logoname\n";
    $botschaft.="Content-Transfer-Encoding: base64\n";
    $botschaft.="Content-Disposition: attachment;\n\tfilename=$logoname\n\n";
    $zeiger_auf_datei=fopen("images/temp/$logoname","rb");
    $inhalt_der_datei=fread($zeiger_auf_datei,filesize("images/temp/$logoname"));
    fclose($zeiger_auf_datei);
    $inhalt_der_datei=chunk_split(base64_encode($inhalt_der_datei));
    $botschaft.=$inhalt_der_datei;
    $botschaft.="\n\n";
    $botschaft.="--$grenze";
    }


    mail("***@*******","Test",$botschaft,$headers); 
    ...


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

    Herzlichen Dank für jeden Hinweis!

    MfG
    Bertram Weckmann

  • #2
    Re: MIME Mail Problem

    schon mal versucht, die richtigen trennzeichen für die header zu benutzen?
    \r\n
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      ja, hatte ich ursprünglich... als ich dann auf das Problem aufmerksam gemacht wurde, habe ich wie gesagt das Web durchwühlt und Beispiele mal mit und mal ohne carrage return gesehen... da es mit nicht funktioniert hatte, dachte ich, lasse ich es mal weg, spielt aber scheinbar keine Rolle...

      Aber rein theoretisch wäre ein korrekter Zeilenumbruch für den Header-Teil \r\n?

      Im body-Teil auch? Oder dort nur \n?

      Kommentar

      Lädt...
      X