amargolf@bst-systemtechnik.de

Microsoft Outlook und VB.Net – Brüder im Geiste – Outlook SendMail unlimited

Vielfach in diversesten Foren und Fachartikeln diskutiert ist das Versenden von Mails mit Outlook aus VB.net für viele Programmierer immer noch ein komplexes Thema. So steht für die meist, im Umgang mit Visual Studio unsicheren Umsteiger von VB6 der Import der Outlook Objektmodelle am Anfang eines jeden Projekts. Selbst Microsoft empfiehlt diesen Weg in seinen Support Foren. Problematisch an dieser Vorgehensweise ist allerdings die Tatsache, dass Microsoft für jede Outlookversion ein eigenes Model bereithält. Für Outlook 2013 muss beispielsweise die Microsoft Outlook 15.0 Object Library importiert und mit Verweis versehen werden. Da man natürlich im Allgemeinen nicht weiß welche Outlookversion auf dem Zielsystem installiert ist, sind die Probleme so gut wie vorprogrammiert. Deshalb einfach mal ein kleiner Tipp, mit kurzem Codeschnipsel, wie man dieses Dilemma elegant umschifft. Warum Microsoft diesen Weg nicht beschreibt bleibt mir ein Rätsel, denn die Objekte, die den Mailversand mit Outlook betreffen sind seit Outlook 2003 gleich geblieben.

Die Outlook SendMail Funktion ist simpel und einfach,

sie funktioniert mit allen Outlook Versionen, sowohl auf 32, als auch auf 64 Bit Systemen.


Public Sub SendMail(ByVal Betreff As String, _
                    ByVal Bodytext As String, _
                    Optional ByVal Anhang As String = "Datei als Anhang", _
                    Optional ByVal Empfaenger As String = "testmail@test.de")

        Try
            '--- Check ob der Outlook Prozess läuft (Bei Windows 8 zwingend notwendig)
            If Process.GetProcessesByName("outlook").Count > 0 Then
                '--- Tue nichts, alles fein ---
            Else
                '--- Outlook starten ---
                Process.Start("outlook")
                Application.DoEvents()
            End If

            '--- notwendige Objekte des Outlook Objektmodels initialisieren ---
            Dim objOutlook As Object
            Dim objOutlookMsg As Object
            Const cMailItem = 0

            '--- evtl. weitere wichtige, selbsterklärende Konstanten ---
            'Const cBCC = 3
            'Const cImportanceHigh = 1
            'Const cCC = 2
            Const cTo = 1

            '--- erstellen der notwendigen Objekte ---
            objOutlook = CreateObject("Outlook.Application")
            objOutlookMsg = objOutlook.CreateItem(cMailItem)

            '--- Zusammenbasteln der Mail ---
            With objOutlookMsg
                Dim objOutlookRecip As Object = .Recipients.Add(Empfaenger)
                objOutlookRecip.type = cTo
                .Subject = Betreff
                .Body = Bodytext
                If Anhang <> "Datei als Anhang" Then .Attachments.add(Anhang)
                '.Importance = olImportanceHigh
                .Display() ' Display() zeigt die neue Nachricht, .Send() sendet direkt
            End With

            '--- Objekte zerstören ---
            objOutlookMsg = Nothing
            objOutlook = Nothing

        Catch ex As Exception

            '--- Fehler abfangen falls kein Outlook installiert ist ---
            'MsgBox(ex.Message)
            '----------------------------------------------------------

        End Try

    End Sub

In der Outlook SendMail Funktion werden die Variablen für Betreff, Bodytext, Empfängeradresse sowie ein eventueller Anhang als Pfad einfach übergeben. Outlook öffnet sich daraufhin wie von Zauberhand und zeigt die Mail fix und fertig für den Versand. Optional kann die Mail der Begierde auch direkt im Hintergrund versendet werden.

Sollte Ihnen das Angebot gefallen, empfehlen Sie es gerne weiter.
Like Button, der nicht nach Hause telefoniert

Schreiben sie einen Kommentar

Lösen sie folgende kleine Aufgabe zur Spamvermeidung *

#07A6D0#CCCCCC1
Wir benutzen Cookies um die Nutzerfreundlickeit der Webseite zu verbessen. Durch Deinen Besuch stimmst Du dem zu.