Outlook: E-Mail-Absender per VBA einstellen

Die üblichen Artikel über das Versenden von E-Mails über Outlook per VBA lassen meist unberücksichtigt, wie man den Absender einer E-Mail einstellen kann. Dies kann nicht durch einfaches Zuweisen der Absender-Adresse geschehen, da der Absender unter Outlook in einem Konto vorhanden sein muss. Die passende Eigenschaft heißt SendUsingAccount. Wie wir diese füllen, wie wir die verfügbaren Absender-E-Mail-Adressen ermitteln und welche Besonderheit bei Verwendung von Late Binding zu beachten sind, zeigen wir in diesem Beitrag.

Absender in Outlook auswählen

Wenn Sie in Outlook eine neue E-Mail erstellen, können Sie aus den vorhandenen Konten die gewünschte Absenderadresse auswählen (siehe Bild 1).

E-Mail-Konten, die als Absender eingestellt werden können

Bild 1: E-Mail-Konten, die als Absender eingestellt werden können

Wenn wir per VBA eine neue E-Mail erstellen, können wir zwar leicht den Empfänger, den Betreff, den Inhalt und andere Informationen zuweisen.

Wenn wir jedoch den Absender festlegen wollen, finden wir lediglich die Eigenschaft SendUsingAccount vor.

Diese nimmt jedoch keine E-Mail in Form einer Zeichenkette entgegen, sondern erwartet ein Objekt des Typs Account.

Also stellen wir im vorliegenden Beitrag ein Beispiel vor, mit dem Sie den gewünschten Absender auswählen und zuweisen können, sodass diese E-Mail vom entsprechenden Konto aus versendet werden kann.

Beispielformular

Zu diesem Zweck haben wir ein Formular erstellt, mit dem wir die gängigen Daten einer E-Mail eingeben können. Hauptsächlich wollen wir damit aber den Absender auswählen können (siehe Bild 2).

Formular zum Erstellen von E-Mails

Bild 2: Formular zum Erstellen von E-Mails

Damit uns beim Ausprobieren immer gleich ein paar Daten vorliegen, füllen wir die Felder beim Laden des Formulars mit der Prozedur aus Listing 1. Hier stellen wir insbesondere für das Kombinationsfeld zur Auswahl des Absenders die Eigenschaft Herkunftsart (RowSourceType) auf Wertliste ein (Value List).

Private Sub Form_Load()
     With Me!cboVon
         .RowSourceType = "Value List"
         .RowSource = AbsenderEinlesen
         .Value = .ItemData(0)
     End With
     Me!txtAn = Me!cboVon.ItemData(0)
     Me!txtBetreff = "Beispiel-E-Mail"
     Me!txtInhalt = "Dies ist eine Beispiel-E-Mail."
End Sub

Listing 1: Füllen der Formularfelder beim Öffnen des Formulars

Außerdem weisen wir der Eigenschaft Datensatzherkunft das Ergebnis einer Funktion namens AbsenderEinlesen zu und wählen direkt den ersten Eintrag als Standardwert aus.

Outlook per VBA und Early Binding programmieren

Damit wir beim Programmieren der Outlook-Elemente die Vorteile von Early Binding wie IntelliSense nutzen können, fügen wir dem VBA-Projekt über den Verweise-Dialog (Extras|Verweise) einen Verweis auf die Bibliothek Microsoft Outlook x.0 Object Library hinzu (siehe Bild 3).

Verweis auf die Outlook-Objektbibliothek

Bild 3: Verweis auf die Outlook-Objektbibliothek

Absender aus Outlook einlesen

Outlook bietet mit Accounts eine Auflistung an, die alle Konten der lokalen Outlook-Instanz enthält – unabhängig davon, ob diese in einer .pst-Datei liegen oder auf mehrere verteilt sind. Die Accounts-Auflistung durchlaufen wir in der Prozedur aus Listing 2 und weisen das aktuelle Objekt jeweils der Variablen objAccount zu. Dieses liefert mit der Eigenschaft SmtpAddress die E-Mail-Adresse, die wir als Absenderadresse nutzen können.

Public Function AbsenderEinlesen() As String
     Dim objOutlook As Outlook.Application
     Dim objMAPI As Outlook.NameSpace
     Dim objAccount As Outlook.Account
     Dim strAccounts As String
     Set objOutlook = New Outlook.Application
     Set objMAPI = objOutlook.GetNamespace("MAPI")
     For Each objAccount In objMAPI.Accounts
         strAccounts = strAccounts & objAccount.DisplayName & ";"
     Next objAccount
     AbsenderEinlesen = strAccounts
End Function

Listing 2: Einlesen einer Liste der möglichen Absenderadressen

Du hast das Ende des frei verfügbaren Textes erreicht. Möchtest Du ...

Oder bist Du bereits Abonnent und hast Zugangsdaten? Dann logge Dich gleich hier ein:
Die Zugangsdaten findest Du im aktuellen gedruckten Heft oder in der E-Mail, die Du als Abonnent mit jeder neuen Ausgabe erhältst.

Schreibe einen Kommentar