Outlook Mail mit eingebetteten Bildern im Body Text als versteckte Anhänge

  • Hallo!


    Ich würde gerne Emails per Outlook versenden, die ein Bild im Text enthalten. (HTML Body)

    Das ist Erstellen und Versenden funktioniert auch wunderbar dank Waters OutlookEX UDF.

    Die erstellten Mails enthalten auch das Bild und in Outlook werden sie auch richtig dargestellt, nur mit der Büroklammer als Schönheitsfehler.

    In anderen Mailclients wird das Bild aber überhaupt nicht in der Email dargestellt sondern "nur" als Anhang.


    Water wurde dazu schon vor mehr als 10 Jahren im Englischen Forum tätig.

    Dort hatte er auf die Webseite http://www.outlookcode.com verwiesen. Beitrag aus dem englischen Forum

    Diese ist leider nicht mehr verfügbar und somit konnte ich nicht nachsehen.


    Hat jemand von euch eine Idee wie ich das Bild als Anhang einbinde damit es im Text sichtbar ist und nicht als Anhang selber zum Downloaden angeboten wird.

    Hier mein Testcode:

  • Hast Du die Seite mal auf webarchive.com gesucht?

  • In anderen Mailclients wird das Bild aber überhaupt nicht in der Email dargestellt sondern "nur" als Anhang.

    Nun, das hängt ja auch von der Einstellung des Clients ab. Ich lasse im Mail Client niemals html zu, ausschließlich Text.

    Also als erstes mal prüfen, ob nicht evtl. der Client auch auf "nur Text" eingestellt ist.

  • die codieren die Bilder in base64 als String in den Code...

    MfG Schnuffel


    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

  • Wie das mit der OutlookEX UDF geht, findest Du, wenn Du die Beispielskripte nach "cid:" durchsuchst.
    Ich bin derzeit leider nicht an meinem Windows PC.


    Edit: Hab's - es ist _OL_ItemCreate.au3 Example 4

  • ansonsten bleibt vielleicht die gute alte Verlinkung zu einem Bild Im Inet.

    Hat man dazumal verworfen als Bandbreiten und dauerhaftes Internet noch nicht Gang und Gebe waren.

    Aber heute hat doch jeder überall flatrate.

    Sollte also wieder in Betracht gezogen werden

    MfG Schnuffel


    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

  • Hier gibt es eine gute Beschreibung, wie 0x3712001E eingesetzt werden soll.

    Hab's aber selbst noch nicht ausprobiert.


    Edit: Habe aber den Eindruck, dass das die selbe Aktion ist, wie mit der beschriebenen CID in _OL_ItemCreate.au3 Example 4.

  • Schnuffel #10

    Ja stimmt schon. Hierfür braucht man halt einen Webserver. Diesen zu betreiben ist mir der Aufwand nicht wert.


    water

    Mein Testcode ist so genau dein Beispielscript.


    Ich vermute, dass man dem Attachment einen Parameter mitgeben muss damit es nicht als normales Attachment wahrgenommen wird.

    Hättest du eine Ahnung wie ich das hier umsetzen kann mit deiner UDF

    PropertyAccessor.SetProperty method (Outlook)
    Office VBA reference topic
    docs.microsoft.com


    Code
    attachment.PropertyAccessor.SetProperty
        ( "http://schemas.microsoft.com/mapi/proptag/0x3712001E"
        , imageCid
        );
  • Nicht ganz.
    Im Beispiel 4 wird zuerst das Attachment angehängt BEVOR der HTMLBody sich mit CID darauf bezieht. bzw. beziehen kann.

    Dein Beispiel macht es genau umgekehrt und daraus resultieren die Probleme.

  • Hallo Concara,


    ich habe jetzt nur das Thema überflogen.

    Wurde denn schon mal der Email Header (heißt im Outlook "Internetkopfzeilen") von den beiden Emails auf unterschiede geprüft?


    Gruß gmmg

  • @GM

    Ja das habe ich schon gemacht.


    Ich brauch so was denke ich nur habe ich keine Ahnung wie ich das umsetzt:

    Code
    //CONTENT-ID
                        const string schemaPrAttachContentId = @"http://schemas.microsoft.com/mapi/proptag/0x3712001E";
                        var contentId = Guid.NewGuid().ToString();
    
                        mail.Attachments.Add(imagePath, OlAttachmentType.olEmbeddeditem, mail.HTMLBody.Length, Type.Missing);
                        mail.Attachments[mail.Attachments.Count].PropertyAccessor.SetProperty(schemaPrAttachContentId,
                                                                                              contentId);
  • Und wenn du dir das erforderliche aus einem Beispiel holst. Sprich: erstelle eine Mail mit Outlook mit eingebettetem Bild, speichere diese Mail dann als html und schaue dir den code an.

    Da ich aktuell nicht weiß wie du in der UDF der Text etc. zusammengesezt wird, weiß ich nicht ob dir das hilft aber einen Versuch wäre es doch Wert.

  • Oder:

    Hol Dir die korrekt angezeigte Mail und lass Dir folgende Werte mit PropertyAccessor ausgeben:

    • ATTACH_CONTENT_ID "http://schemas.microsoft.com/mapi/proptag/0x3712001E"
    • ATTACH_CONTENT_LOCATION "http://schemas.microsoft.com/mapi/proptag/0x3713001E"
    • ATTACH_METHOD "http://schemas.microsoft.com/mapi/proptag/0x37050003"
    • ATTACH_FLAGS "http://schemas.microsoft.com/mapi/proptag/0x37140003"

    Poste dann bitte das Ergebnis. Wir können dann hoffentlich jene Werte ermitteln, die Du im AutoIt-Skript für neue Mails setzen musst.

  • Moombas

    Danke für deinen Beitrag. Das habe ich auch schon gemacht. An der HTML liegt es nicht.


    water

    Bei dir klinkt das immer so einfach :)

    Wie mach ich das?


    Ich habe versucht deine _OL_ItemAttachmentGet Funktion zu erweitern.

    Aber aus Mangel an Wissen funktioniert das nicht.