Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Fehler beim Einfügen von Inline Attachments

Einklappen

Neue Werbung 2019

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

  • Gast-Avatar
    Ein Gast erstellte das Thema [Erledigt] Fehler beim Einfügen von Inline Attachments.

    [Erledigt] Fehler beim Einfügen von Inline Attachments

    hallo,

    ich weiss dieses thema oder ähnliche probleme gab es schon haufenweise aber ich komme mit google und suche nicht mehr weiter.

    ich hab folgenden quellcode der mir eine multipart email zusammenbauen soll die aus folgenden teilen besteht:

    - einem html teil der aus einer .html datei gelesen wird
    - einer kleinen grafik die per inline attachment eingefügt werden soll.

    los gehts:

    PHP-Code:
    $dateiname "grafik.jpg";
    $datei "pfad zur grafik";

    $grenze "----";
    $header "MIME-Version: 1.0\r\n";
    $header .= "From:Adresse <Adresse>\n";
    $header .="Content-Type: multipart/related;\n\tboundary=$grenze\n";
    $header .="Content-Disposition:inline\n"
    multipart/related für mehrteilige verbundene inhalte (grafik und html teil)

    danach der html teil:

    PHP-Code:
    $botschaft.="Content-Type: text/html;charset=iso-8859-1\n";
    $botschaft.="Content-Transfer-Encoding: base64\n\n";
    $botschaft .= chunk_split(base64_encode($HTMLContent)); 
    dieser teil funktioniert und ist nur der vollständigkeit wegen dabei.

    jetzt der kritische teil, die grafik:

    PHP-Code:
    $botschaft .= "<img src=cid:4711 border=0>";

    $botschaft.="\n--$grenze\n";
    $botschaft.="Content-Type: image/jpg;\n\tname=".$dateiname."\n";
    $botschaft.="Content-Transfer-Encoding: base64\n";
    $botschaft.="Content-ID: <CID>\n";
    $botschaft.="Content-Disposition:inline;filename=".$dateiname."\n\n"
    danach erfolgt noch das einlesen der datei etc.:

    PHP-Code:
    $zeiger_auf_datei=fopen($datei,"rb");
    $inhalt_der_datei=fread($zeiger_auf_datei,filesize($datei));
    fclose($zeiger_auf_datei);
    $inhalt_der_datei=chunk_split(base64_encode($inhalt_der_datei));
    $botschaft.=$inhalt_der_datei
    das script ist wurde von mir in diese form gebracht und sollte eigentlich funktionieren.
    der html teil wird auch korrekt angezeigt aber die inline grafik macht probleme. in der mail selbst werden eine reihe
    seltsame symbole angezeigt (ich nehme
    an da liegt ein codierungsfehler vor?)
    und die grafik wird als anhang mitgesendet. also nicht eingebunden wie das eigentlich sein soll.

    findet hier vielleicht jemand den fehler beim drüber schauen?

  • Gast-Avatar
    Ein Gast antwortete
    htmlMimeMail5

    http://www.phpguru.org/static/mime.mail.html

    steht unter der gpl, für meine zwecke also eigentlich unbrauchbar. aber ich lass das
    jetzt erstmal so damit ich weiterkomme.

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Welche Klasse? Lass mal Link da.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    problem ist gelöst. ich hab eine freie klasse gefunden die das für mich übernimmt.
    ich würd zwar immer noch gerne wissen was der fehler in meinem script ist aber
    ich hab keine zeit mehr mich weiter damit zu befassen :wink:

    karl-150, vielen dank für deine umfangreiche hilfe.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    teilweise scheint das geholfen zu haben.
    ich hab jetzt keine codierten zeichen mehr in der mail selbst allerdings wird die grafik
    immer noch als normales attachment angehangen.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von Pyro
    wobei ich gerade sehe das es jpeg heissen muss.
    Das meinte ich!

    Zitat von Pyro
    heisst es auch nicht. das ist ein \t und dann name.


    Zitat von Pyro
    ich hab den quellcode gepostet weil ich dachte es wäre irgendein offensichtlicher fehler.
    Was mir noch so gerade aufgefallen ist:

    Du verwendest in dem als base64-kodiert definierten HTML-Teil einen unkodierten String:
    PHP-Code:
    $botschaft .= "<img src=cid:4711 border=0>"
    Außerdem fehlen noch die Anführungszeichen bei boundary:
    PHP-Code:
    $header .="Content-Type: multipart/related;\n\tboundary=\"$grenze\"\n"
    Vielleicht hilft es ja schon...

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    danke für die ausführliche antwort!

    Die muss ja sehr geheim sein, Deine CID, - vor allem da sie ja in Deinem Image-Tag schon steht...
    nein, geheim nicht. ich wollte das script nur so klein und übersichtlich wie möglich halten. deshalb hab ich einfach 4711 genommen. :wink:

    Im Übrigen solltest Du etwas genauer arbeiten. Der Mimetype image/jpg existiert meines Wissens nach nicht
    doch den gibt es. sihe hier:
    http://de.selfhtml.org/diverses/mimetypen.htm
    wobei ich gerade sehe das es jpeg heissen muss.

    Wenn Dir nicht unbedingt am Basteln liegt, kannst du auch den phpmailer verwenden
    ich wusste das dieser vorschlag kommt. bei allen problemen mit mail wird phpmailer vorgeschlagen. :wink:
    geht bei mir aber 1. aus organisatorischen gründen und 2. aus lizenzrechtlichen gründen nicht.

    oder schau einmal bei http://www.php.net/mail vorbei (unter den Kommentaren finden sich - glaube ich - einige Beispiele zum Versenden von Multipart-Mails)...
    das ist richtig. die beispiele hab ich mir auch angeschaut. anhand dieser informationen und anderen quellen hab ich mein script dann auch aufgebaut.

    außerdem heißt es nicht tname
    heisst es auch nicht. das ist ein \t und dann name.

    ich hab den quellcode gepostet weil ich dachte es wäre irgendein offensichtlicher fehler.
    ich schau mir mal die thunderbird mail an.
    vielen dank.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von Pyro
    klar, das ist im script auch so.
    als ich den beitrag erstellt habe, hab ich meine bezeichnungen rausgekommen.
    Die muss ja sehr geheim sein, Deine CID, - vor allem da sie ja in Deinem Image-Tag schon steht... :wink:


    Schau Dir doch einmal den Quelltext einer "Multipart-Mail" an und versuche Dein Skript dementsprechend aufzubauen.

    Im Übrigen solltest Du etwas genauer arbeiten. Der Mimetype image/jpg existiert meines Wissens nach nicht, außerdem heißt es nicht tname, Dein Boundary ist auch nicht gerade clever gewählt/nicht überall wo nötig gesetzt etc.


    Wenn Dir nicht unbedingt am Basteln liegt, kannst du auch den phpmailer verwenden, oder schau einmal bei http://www.php.net/mail vorbei (unter den Kommentaren finden sich - glaube ich - einige Beispiele zum Versenden von Multipart-Mails)... :wink:


    /edit:

    Falls es Dich interessiert, so generiert Thunderbird die Mail:
    Zitat von Mozilla Thunderbird
    ...
    MIME-Version: 1.0
    To: ***@gmx.net
    Content-Type: multipart/related;
    boundary="------------040209020705080205040909"

    This is a multi-part message in MIME format.
    --------------040209020705080205040909
    Content-Type: text/html; charset=ISO-8859-15
    Content-Transfer-Encoding: 7bit

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta content="text/html;charset=ISO-8859-15"
    http-equiv="Content-Type">
    <title></title>
    </head>
    <body>
    [img]cidart1.05010104.06050804@gmx.net[/img]
    </body>
    </html>

    --------------040209020705080205040909
    Content-Type: image/jpeg;
    name="bild.jpg"
    Content-Transfer-Encoding: base64
    Content-ID: <part1.05010104.06050804@gmx.net>
    Content-Disposition: inline;
    filename="bild.jpg"

    ###base64-kodierte Bilddatei##
    --------------040209020705080205040909--
    Vielleicht kannst Du Dir ja was abschauen... :wink:

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    klar, das ist im script auch so.
    als ich den beitrag erstellt habe, hab ich meine bezeichnungen rausgekommen
    (email adresse etc.) und durch platzhalter ersetzt.
    das hab ich dabei übersehen.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Wo liegt der Sinn hierin?
    PHP-Code:
    $botschaft.="Content-ID: <CID>\n"
    Statttdessen nicht vielleicht lieber?
    PHP-Code:
    $botschaft.="Content-ID: <4711>\n"

    Einen Kommentar schreiben:

Lädt...
X