Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Email Signaturen auswählen

Begonnen von ToBu, Mai 21, 2024, 17:30:46

⏪ vorheriges - nächstes ⏩

ToBu

Hallo miteinander, in meinem Outlook Programm habe ich verschiedene Signaturen hinterlegt. Ich möchte gerne über VBA Anweisungen für bestimmte neue Mails entsprechende Signaturen auswählen/benennen können. Leider fehlt mir wieder die Kenntnis zum "Vokabular", wie man das in VBA steuern kann! Ich bitte wieder einmal um eure profunde Hilfe! Vielen Dank im Voraus! Gruß ToBu

markusxy

Zitat von: ToBu am Mai 21, 2024, 17:30:46wie man das in VBA steuern kann

Im Outlook Objektmodell ist so eine Möglichkeit nicht vorgesehen.

Die Frage ist erstmal wie der Workflow ist, dann kann man sich überlegen, wie man die Funktionalität selbst programmieren kann.
In einem alten Projekt habe ich die Signatur als HTML String direkt per VBA erstellt und eingefügt. Wenn das genügt, ist das wohl recht einfach.


ToBu

Ich habe nun alle Emails in Entwürfe mit Anhängen gespeichert. Dazu benutzte ich für alle deutschsprachigen Adressanten eine dt. Signatur. Vor dem 2. Durchlauf wählte ich für alle anderen Adressaten die englische Signatur. Das funktioniert zwar, aber ist ziemlich lästig! Wie sieht denn die "einfache" Lösung aus? Vielen Dank für die Antwort!

PhilS

Zitat von: ToBu am Mai 21, 2024, 17:30:46Ich möchte gerne über VBA Anweisungen für bestimmte neue Mails entsprechende Signaturen auswählen/benennen können. Leider fehlt mir wieder die Kenntnis zum "Vokabular", wie man das in VBA steuern kann!
Wie @markusxy bereits schrieb, gibt es keine Funktionalität im Outlook-Objektmodell, mit der man Signaturen bearbeiten kann.
Die einfachste Lösung ist, dass du den Text der Signatur direkt am Ende deines Email-Textes anhängst. - Das Ergebnis ist genau dasselbe, wie mit einer expliziten Signatur. Nachteil ist, dass dein Programm den Signaturtext ebenfalls kennen muss und du ihn dann an zwei verschiedenen Stelle pflegen musst.

Du kannst auch den Text der Outlook-Signatur auslesen und den dann an den Email-Text anhängen. Die Outlook-Signaturen sind gespeichert in %APPDATA%\Microsoft\Signatures und liegen üblicherweise in TXT-, RTF- und HTML-Format vor.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

ToBu

Danke für die Hinweise! Meine beiden Signaturen beinhalten neben Text mit Formaten von Fonts in normal und fett auch verschiedene Links und Bilder zu Websites. Wie können solche Besonderheiten übernommen werden, wenn ich die Signatur kopiere und anhänge? Das klappt leider nicht, weil ich wieder nicht weiß, wie die Codes lauten! Der Versuch mit emailText = "%APPDATA%\Microsoft\Signatures" scheint auch nicht angenommen zu werden, weil nur der in "" liegende Text wiedergegeben wird. Wie meint ihr, könnte ein angehängter Text in VBA aussehen?

ToBu

ich habe es getestet. Der EmailText wird ignoriert und dadurch die Signatur übernommen, die bei ausgehenden neuen Emails namentlich gesetzt ist! Das gleiche Ergebnis wird erzielt, wenn der EmailText ganz fehlt! So habe ich es ja bisher auch genutzt! Aber ich möchte ja per Signaturnamen diesen in VBA einrichten können, unabhängig davon was im Outlook, Email, Signatur für neue ausgehende Emails gesetzt ist. Es sollte ja der unter verschiedenen Signaturnamen die übereinstimmende Signatur gewählt werden! Etwa so?
emailText = "%APPDATA%\Microsoft\Signatures\geschäftlich"

ToBu

Ich habe nun die Sache variabel gestaltet. Kann das funktionieen?:

        If Land1 = "A" Or Land1 = "D" Then strSignatur = "geschäftlich" Else: strSignatur = "geschäftlich (engish)"
       
        MsgBox "Signatur: " & strSignatur
       
        emailText = "%APPDATA%\Microsoft\Signatures\" & strSignatur
        Set outMail = outApp.CreateItem(olMailItem)
        strFilename = PfadName
        outMail.Attachments.Add strFilename
        outMail.To = emailTo
        outMail.Subject = emailSubject
        'outMail.Body = emailText
        outMail.Display
        outMail.Save
        outMail.Close (olSave)


markusxy

Zitat von: ToBu am Mai 22, 2024, 16:36:24Der EmailText wird ignoriert und dadurch die Signatur übernommen

In EmailText fügst du einen Pfad ein und nicht den Inhalt einer Datei.
Abgesehen davon musst du den Inhalt via HTMLBody übergeben, da ein formatierter Text ja per HTML formatiert ist. Weiters müsstest du Bildern in der Signatur auch noch als Anhang hinzufügen.

Dieser Link könnte weiterhelfen:


ToBu

Hallo Markus, vielen Dank für deine Hinweise und den Link! Aber das scheint mir für mich zu komplex zu sein! Aber nochmals Danke! Gruß ToBu

ToBu

PS: Wäre es machbar, statt einer Signatur den Pfad zu einer Worddatei zu verwenden, die Bilder und Links beinhaltet?

markusxy

Zitat von: ToBu am Mai 29, 2024, 13:32:27den Pfad zu einer Worddatei zu verwenden

Nein.
Da solche Funktionalitäten fehlen, muss man sich das selbst vollständig programmieren.
Persönlich würde ich vermutlich das Bild per Base64 Codierung in eine HTML Vorlage einfügen und dann den Code aus der Vorlage auslesen und ins Mail einfügen.
Dafür das Auslesen einer Datei gibts ja auch genug Beispiele, falls dir das neu ist.

Aber du hast natürlich recht, für so eine Umsetzung muss man generelle Grundlagen schon verstehen. Wenn dir die Möglichkeit fehlt, dir Grundverständis anzueignen, würde ich die Signatur händischen einfügen.


PhilS

Zitat von: ToBu am Mai 29, 2024, 13:32:27Wäre es machbar, statt einer Signatur den Pfad zu einer Worddatei zu verwenden, die Bilder und Links beinhaltet?
Machbar wäre das vermutlich. Ich halte es aber nicht für eine gute Idee. Outlook selbst speichert die Signaturen im Plain-Text-, HTML-, und RTF-Format, nicht aber als Word-Datei. Daher würde ich auch ein geeignetes dieser Formate wählen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor