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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 355532
Url: https://administrator.de/contentid/355532
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
25 Kommentare
Neuester Kommentar
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
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.
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.
@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?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 ...Das ist eine globale Einstellung, wenn ich es richtig verstehe. Ich brauche aber eher etwas feinfühligeres...
Zitat von @ahstax:
Das ist eine globale Einstellung, wenn ich es richtig verstehe. Ich brauche aber eher etwas feinfühligeres...
Nö ...Das ist eine globale Einstellung, wenn ich es richtig verstehe. Ich brauche aber eher etwas feinfühligeres...
Group Policy registry path:
HKEY_CURRENT_USER\software\policies\microsoft\office\15.0\outlook\security!promptoomsend
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.keinen Programmnamen odgl. hinterlegen. Ich kann nur bestimmen, was OL bei einem generellen Programmzugriff macht...?!?
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.Verzeiht mir bitte, aber ich kann doch hier HKEY_CURRENT_USER\software\policies\microsoft\office\15.0\outlook\security!promptoomsend
keinen Programmnamen odgl. hinterlegen.
Jag eins der Addons durch den Decompiler ...
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
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
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.
https://www.add-in-express.com/outlook-security/index.php
Ist extra für Entwickler gedacht.
Das schaltet meines Erachtens nur den jeweiligen Prozess frei von wo aus die Funktione aus aufgerufen wurden, laut Doku.
Nun solange die Malware Admin-Rechte erlangt kann sie sowieso alles.
Nein.
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
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