ahstax
Goto Top

Vb.net-Tool zum Erzeugen einer Outlook-E-Mail

Hallo,

ich möchte gerne ein vb.net-Tool schreiben, das am Ende eine Outlook-E-Mail erzeugt. Grundsätzlich ist mir klar, wie das zu machen ist.

Was ich dabei aber als Problem im Hinterkopf habe, ist die "Zugriff gewähren"-Problematik. Um dem zu begegnen gibt es ja ein paar Tools, bspw. "Advanced Security for Outlook".

Gibt es eine Möglichkeit, aus einem Programm heraus eine Outlook-E-Mail erstellen zu lassen, ohne die Zugriff-gewähren-Problematik und ohne weiters Tool? Kann man das erstellte Programm an einem bestimmten, als sicher geltenden Speicherort ablegen? Gibt es irgendwelche Möglichkeiten? Ist das evtl abhängig von der verwendeten Outlook-Version (vorhanden sind 2007er, 2010er, 2013er und 2016er-Versionen)?

Neugierige Grüße,
Andreas

Content-ID: 355532

Url: https://administrator.de/forum/vb-net-tool-zum-erzeugen-einer-outlook-e-mail-355532.html

Ausgedruckt am: 23.12.2024 um 10:12 Uhr

rrobbyy
Lösung rrobbyy 21.11.2017 um 09:03:52 Uhr
Goto Top
folgenden Code funktioniert bei mir (Office 2010 bis 2016) ohne Probleme.

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

        Try
            '--- Check ob der Outlook läuft (ab win8 muss das so)  
            If Process.GetProcessesByName("outlook").Count > 0 Then  
                '--- Tue nichts, alles fein ---  
            Else
                '--- Outlook starten ---  
                Process.Start("outlook")  
                Application.DoEvents()
            End If

            '--- 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
                .CC = CCEmpfaenger
                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

End Module
emeriks
emeriks 21.11.2017 um 09:05:47 Uhr
Goto Top
Hi,
Du willst Outlook fernsteuern und dieses eine Mail schreiben lassen?

Wenn Da ein Exchange hinter ist, dann könntest Du Dir das sparen und die .Net-Anwendung selbst und dirket über das Postfach senden lassen. Dann erscheint diese Mail auch im Outlook.
Bei IMAP/POP3-Postfächern weiß ich jetzt nicht, ob Outlook sich auch eine "an ihm vorbei" gesendete Mail in die PST synchronisiert.

Ansonsten könntest Du mal nach VB.Net Outllook COM Addin suchen

E.
ahstax
ahstax 21.11.2017 um 09:24:10 Uhr
Goto Top
@rrobbyy Vielen Dank! Zu meinem Bedauern ist das der Weg, den ich bereits kenne und der die "Zugriff -gewähren-Problematik" mit sich bringt...

@emeriks Brauche ich für ein AddIn eine spezielle Version von Visual Studio? Kann ich das AddIn von einem Programm, das nicht Outlook ist, anstoßen?

Vielleicht hätte ich das erwähnen sollen/müssen... Eine Büroverwaltungssoftware soll die zu versendende E-Mail erzeugen....
emeriks
emeriks 21.11.2017 um 09:41:03 Uhr
Goto Top
@rrobbyy Vielen Dank! Zu meinem Bedauern ist das der Weg, den ich bereits kenne und der die "Zugriff -gewähren-Problematik" mit sich bringt...
Ja, so kenne ich das auch. Das wurde ja mal extra eingebaut, damit Malware nicht einfach das Outlook fernsteuern kann.
@emeriks Brauche ich für ein AddIn eine spezielle Version von Visual Studio?
Keine Ahnung. Aber ich mutmaße, in der Community Edition ist dafür noch keine Vorlage drin. Das muss dann wahrscheinlich schon eine kostenpflichtige Edition sein.
Kann ich das AddIn von einem Programm, das nicht Outlook ist, anstoßen?
Nein. Aber das AddIn könnte irgenwie als "Proxy" fungieren.

Vielleicht hätte ich das erwähnen sollen/müssen... Eine Büroverwaltungssoftware soll die zu versendende E-Mail erzeugen....
"eine Software" ? Eure eigene, von Euch programmierte?
ahstax
ahstax 21.11.2017 um 09:51:39 Uhr
Goto Top
Ja, so kenne ich das auch. Das wurde ja mal extra eingebaut, damit Malware nicht einfach das Outlook fernsteuern kann.
Ja, so auch mein Kenntnisstand...

"eine Software" ? Eure eigene, von Euch programmierte?
Ist zwar nicht unsere eigene und nicht von uns programmiert, aber ein ziemlich spezifisches Produkt, dass vermutlich nur 1000 Unternehmen nutzen und insgesamt vermutlich nur 10.000 Personen...
134464
134464 21.11.2017 um 09:53:37 Uhr
Goto Top
ahstax
ahstax 21.11.2017 um 09:57:55 Uhr
Goto Top
Das ist eine globale Einstellung, wenn ich es richtig verstehe. Ich brauche aber eher etwas feinfühligeres...
emeriks
emeriks 21.11.2017 um 10:15:06 Uhr
Goto Top
Zitat von @ahstax:

Das ist eine globale Einstellung, wenn ich es richtig verstehe. Ich brauche aber eher etwas feinfühligeres...
Das scheint mir aber ganau in die richtige Richtung zu gehen. Damit kann man Outlook ab Version 2013 anweisen, solche Zugriffe doch zuzulassen. Und das kannst Du auch "feinfühlig" per Benutzer verteilen. Damit wäre die Lösung von @rrobbyy wieder im Rennen ...
134464
Lösung 134464 21.11.2017 aktualisiert um 10:22:43 Uhr
Goto Top
Zitat von @ahstax:

Das ist eine globale Einstellung, wenn ich es richtig verstehe. Ich brauche aber eher etwas feinfühligeres...
Nö ...
Group Policy registry path: HKEY_CURRENT_USER\software\policies\microsoft\office\15.0\outlook\security!promptoomsend
ahstax
ahstax 21.11.2017 um 10:33:43 Uhr
Goto Top
Verzeiht mir bitte, aber ich kann doch hier HKEY_CURRENT_USER\software\policies\microsoft\office\15.0\outlook\security!promptoomsend
keinen Programmnamen odgl. hinterlegen. Ich kann nur bestimmen, was OL bei einem generellen Programmzugriff macht...?!?


Bspw: https://www.slipstick.com/developer/change-programmatic-access-options/
emeriks
emeriks 21.11.2017 um 10:40:41 Uhr
Goto Top
Verzeiht mir bitte, aber ich kann doch hier HKEY_CURRENT_USER\software\policies\microsoft\office\15.0\outlook\security!promptoomsend
keinen Programmnamen odgl. hinterlegen. Ich kann nur bestimmen, was OL bei einem generellen Programmzugriff macht...?!?
Das ist richtig. Sowas sollte man dann also auch nur für ausgesuchte Daten im Outlook/Postfach freischalten.
134464
134464 21.11.2017 aktualisiert um 11:21:53 Uhr
Goto Top
Zitat von @ahstax:

Verzeiht mir bitte, aber ich kann doch hier HKEY_CURRENT_USER\software\policies\microsoft\office\15.0\outlook\security!promptoomsend
keinen Programmnamen odgl. hinterlegen.
So einen Key den du dir wünschst gibt es ja auch nicht, dann wäre es für Angreifer ja genau so einfach. Du kannst dein Programm nur, so wie das die von dir genannten Addons machen über einen Hook in das Addon in Outlook deinen Prozess für Outlook als "vertrauenswürdig" markieren.
ahstax
ahstax 21.11.2017 um 11:27:29 Uhr
Goto Top
So einen Key den du dir wünschst gibt es ja auch nicht, dann wäre es für Angreifer ja genau so einfach. Du kannst dein Programm nur so, wie das die von dir genannten Addons machen, über einen Hook in das Addon in Outlook deinen Prozess für Outlook als "vertrauenswürdig" markieren.

Wie macht man so einen Hook? Finde ich dazu irgendwo Dokumentation?
134464
134464 21.11.2017 um 11:40:24 Uhr
Goto Top
Jag eins der Addons durch den Decompiler ... face-wink
SachsenHessi
SachsenHessi 21.11.2017 um 12:03:56 Uhr
Goto Top
Hallo,

es gibt noch
https://www.mapilab.com/de/download/#security
Dort gibst Du nur einmalig die App für die Sendeberchtigung frei, und die merkt sich das dann und lässt nur diese Prog ohne Nachfrage durch.
Ist Freeware und funktioniert auch mit den neuen Versionen von Office einwandfrei.
(Alles andere wird etwas aufwändiger. zBsp. über EWS oder REST-API für Exchange)

Gruß
SH
ahstax
ahstax 21.11.2017 um 12:16:59 Uhr
Goto Top
s.o.

Um dem zu begegnen gibt es ja ein paar Tools, bspw. "Advanced Security for Outlook".
134464
134464 21.11.2017 aktualisiert um 12:43:07 Uhr
Goto Top
Das hier kannst du ganz einfach deiner Anwendung als DLL hinzufügen und so nur für diese die Dialoge abschalten
https://www.add-in-express.com/outlook-security/index.php
Ist extra für Entwickler gedacht.
ahstax
ahstax 21.11.2017 um 12:57:30 Uhr
Goto Top
emeriks
emeriks 21.11.2017 um 15:04:56 Uhr
Goto Top
DAS sieht mal gut aus!!!
Das ist doch dann auch ein pauschales Abschalten der Sicherheit. Wo wäre da der Unterschied zum Weg über die GPO bzw. dem Reg-Wert?
134464
134464 21.11.2017 aktualisiert um 15:08:54 Uhr
Goto Top
Das schaltet meines Erachtens nur den jeweiligen Prozess frei von wo aus die Funktione aus aufgerufen wurden, laut Doku.
emeriks
emeriks 21.11.2017 um 15:13:36 Uhr
Goto Top
Und das kann genauso Mailware sein. Oder übersehe ich da etwas?
134464
134464 21.11.2017 um 15:32:21 Uhr
Goto Top
Nun solange die Malware Admin-Rechte erlangt kann sie sowieso alles.
ahstax
ahstax 21.11.2017 um 15:52:05 Uhr
Goto Top
Wenn ich es richtig verstehe, kann ich mit dem Tool die Tür öffnen, eine Mail erstellen und hinterher die Tür wieder schließen...

Und wenn ich das dann richtig mache, was ich hoffe, ändert sich am ursprünglichen Malware-Gedanken von MS nur wenig. Oder wie seht Ihr das?

@specht: Hast Du mit dem Tool Erfahrung?
134464
134464 21.11.2017 um 17:13:50 Uhr
Goto Top
Zitat von @ahstax:
@specht: Hast Du mit dem Tool Erfahrung?
Nein.
SachsenHessi
Lösung SachsenHessi 24.11.2017 aktualisiert um 11:18:55 Uhr
Goto Top
Hallo,

das ist der MapiLab-Securitymanager (https://www.mapilab.com/de/download/#security).
(In dem Falle die entsprechenden DLLs halt direkt angesprochen/eingebunden. Was aber nicht zwingend notwendig ist, es kann auch entspechend im AddIn konfiguriert werden.)
Ich habe das Teil im produktiven Einsatz und bin sehr zufrieden.
Einmal installiert, konfiguriert und seitdem nix mehr davon gehört.
Läuft mit allen Programmen (sofern dieses Programm in dem AddIn freigegeben wurde, was ein einmaliger Vorgank ist.)

Gruß
SH