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

  • Kriegst Du eine Fehlermeldung, wenn Du vor dem Funktionsaufruf _OL_ErrorNotify(2) einbaust?

  • Ich habe einen Screenshot mit STRG+V in eine Mail kopiert und dann das folgende Skript ausgeführt, im Outlook Explorer die Mail selectiert und erhalte folgende Informationen:

    Zitat

    Content ID : image001.png@01D88269.19876430

    Content Location:

    Method : 1

    Flags : 4

  • Hi!

    Gut dann war ich nicht ganz auf dem Holzweg.

    Also wenn man es auf das Outlook.jpg Beispiel anwendet, erhält man.

    Zitat

    Content ID :

    Content Location: The_Outlook.jpg

    Method : 1

    Flags : 0

    Danke für deine Bemühung

    Wie kann ich jetzt diese Eigenschaften ändern?

    Mit _OL_ItemModify? Und wenn ja wie

    If not :?: then ?( else :thumbup:

  • Ich hab jetzt wieder die deine _OL_ItemAttachmentGet missbraucht.

    Kannst du mir da einen "sauberen" Weg zeigen, wie man "http://schemas.microsoft.com/mapi/proptag/0x3712001E" setzt

    Wenn man "http://schemas.microsoft.com/mapi/proptag/0x3712001E" setzt dann schaut das sehr gut aus mit Outlook Thunderbird und K-9

    If not :?: then ?( else :thumbup:

  • Moin,

    ich habe absolut keine Ahnung und habe Outlook auch noch nie benutzt. Aber ich habe ein Beispiel und einige vielleicht hilfreiche Links gefunden:

    PidTagAttachContentId

    Property Types

    OlAttachmentType Enum

    Den Tag ContentId gibt es als ANSI (0x001E) und als Unicode (0x001F) Typ. Vielleicht funktioniert Unicode besser.

  • Das funktioniert bei mir:

  • Velted

    Mein Skript baut auf Deinem Beispiel auf. Gefunden unter: c# - Send email with embedded image without using wordeditor - Stack Overflow

  • Hallo Water!

    Mit deinem Code erhalte ich:

    Was ich auch nicht ganz verstehe ist warum deine Funktion _OL_ItemAttachmentAdd nicht das Attachmentobject zurück gibt?

    Laut dem Beschreibungstext der Funktion sollte das doch sein?

    Damit sollte man doch auch PropertyAccessor setzen können?

    Das Beispiel unten funktioniert aber nicht.

    Ca. so:

    AutoIt
    $oItem = _OL_ItemAttachmentAdd($oOutlook, $oMail, Default, $sPicturePath & ", 1, 0")
        If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF: _OL_ItemCreate Example Script", "Error adding an attachment to the mail item. @error = " & @error & ", @extended = " & @extended)
    $oItem.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001E", $ContentID)

    If not :?: then ?( else :thumbup:

    Einmal editiert, zuletzt von Concara (20. Juni 2022 um 09:42)

  • Hier der Code der soweit das macht, was ich erreichen will.

    Die Bilder Outlook.png und The_Outlook.jpg müssen dazu im Scriptordner vorhanden sein.

    Beide sind in der OutlookUDF von Water enthalten.

    If not :?: then ?( else :thumbup:

  • OK ich habe es herausbekommen.

    Man muss natürlich die Attachments ansprechen.

    Hier also der funktionierende Code ohne extra die Eigenschaften der Attachments auszulesen.

    If not :?: then ?( else :thumbup:

  • Hab mir gerade die UDF angesehen. Sie gibt tatsächlich das Objekt des Mail-Items zurück. Für die weitere Verwendung wäre natürlich das Objekt des Attachments sinnvoll.

    Ich schaue mir das noch an und prüfe, wie ich das bei den anderen Funktionen gelöst habe - damit die UDF konsistent bleibt.
    Eventuell passe ich dann die UDF entsprechend an. Was natürlich ein SCRIPT BREAKING CHANGE wäre ;)

  • Die Idee ist nun, über eine Funktion Optionen für die UDF zu setzen. Dies würde Script Breaking Changes vermeiden.


    Damit könnte man dann angeben, ob die Funktionen der UDF das Objekt des Items (in Deinem Beispiel das Objekt der Mail) oder das angelegte Objekt (in Deinem Fall das Attachment) zurückgeben sollen.
    Dies würde für alle Add und Create Funktionen gelten,

    Was hältst Du davon?

  • Ich halte davon viel.

    Und alle die deine UDF verwenden und aktuell halten, werden es dir danken, wenn sie nichts an ihren Programmen umändern müssen.

    If not :?: then ?( else :thumbup:

  • Wenn es bloss so einfach wäre.

    Mit _OL_AttachmentAdd kann man ja mehr als eine Datei anhängen. Welches Objekt soll in diesem Fall zurückgegeben werden? Des ersten Attachments, des letzten? Oder ein Array mit allen Attachment-Parametern und dem jeweiligen Objekt dazu?

    Dies gilt auch für _OL_ItemRecipientAdd.

    Weitere betroffene Funktionen sind:

    _OL_CategoryAdd

    _OL_MailSignatureCreate

    _OL_UserpropertyAdd

  • Das ist für mich auch schwierig zu beurteilen.

    Die Arbeit hast du und wie viel es bringt kann ich dir auch nicht sagen.

    Eventuell können andere dir da mehr Rückmeldung geben.

    Ob das allerdings wer liest hier ist auch fraglich.

    If not :?: then ?( else :thumbup:

  • Ich verwende zwar kein OL, aber meine Gedanken zur UDF-Gestaltung:

    Die Idee ist nun, über eine Funktion Optionen für die UDF zu setzen. Dies würde Script Breaking Changes vermeiden.

    Ist sicher der effektivste Weg.

    Wenn es bloss so einfach wäre.

    Mit _OL_AttachmentAdd kann man ja mehr als eine Datei anhängen. Welches Objekt soll in diesem Fall zurückgegeben werden? Des ersten Attachments, des letzten? Oder ein Array mit allen Attachment-Parametern und dem jeweiligen Objekt dazu?

    Könnte man vielleicht so handhaben (Variablen etc. frei erfunden, nur zur Verdeutlichung des Prinzips)

  • Es lass es vorläufig wie es ist.

    Da sonst noch niemand Probleme in diese Richtung hatte, scheint der Bedarf nicht allzu groß zu sein.

    Die Funktion um Optionen für die UDF zu setzen bleibt aber drin - für später ;)

    BugFix : Unsere Posts haben sich überschnitten. Deine Lösung werde ich vormerken und bei Bedarf darauf zurückkommen. Danke auf jeden Fall.