OutlookMail.exe

Diskutiere OutlookMail.exe im Programme Forum im Bereich Made by WinBoard-User; In einem anderen Thread habe ich ein kleines Programm geschrieben, dass aus allen möglichen Situationen eine Outlook-Mail erstellt. Man kann...
  • OutlookMail.exe Beitrag #1
Peter Schirmer

Peter Schirmer

Threadstarter
Dabei seit
14.04.2006
Beiträge
7.060
Alter
42
Ort
7th Avenue, Ecke XP und Vista, 8ter Stock, Wohnung
In einem anderen Thread habe ich ein kleines Programm geschrieben, dass aus allen möglichen Situationen eine Outlook-Mail erstellt. Man kann Betreff, Text, Mail-Empfänger und Dateien angeben.

D.h., aus einer Batch-Datei oder aus einem anderen beliebigen Programm kann man Mails versenden.

Der Aufruf erfolgt so:

"C:\temp\OutlookMail\OutlookMail.exe" /body="Wie versprochen, die Unterlagen." /subject="Ihre Unterlagen" /files="C:\Temp\bin\Release" /to="[email protected]

Hier ein Bild dazu:
Bild.png

Benötigt wird

.NET 3.5
Office ab 2003
 

Anhänge

  • OutlookMail.zip
    200,6 KB · Aufrufe: 174
  • OutlookMail.exe Beitrag #2
WillyV

WillyV

C64
Dabei seit
09.01.2008
Beiträge
3.217
Ort
mitten in Österreich
Cooles Teil! Das weckt Fantasien...

Danke!
 
  • OutlookMail.exe Beitrag #3
G

Ghost in the Shell

Gast
hui da lässt sich einiges Automatisieren, super vielen Dank :)
 
  • OutlookMail.exe Beitrag #4
Peter Schirmer

Peter Schirmer

Threadstarter
Dabei seit
14.04.2006
Beiträge
7.060
Alter
42
Ort
7th Avenue, Ecke XP und Vista, 8ter Stock, Wohnung
So, ich habe noch ein wenig gebastelt. Unter Office 2007 erscheint eine Fehlermeldung, wenn der Anhang zu groß ist (interne Meldung von Outlook). Es erscheint dieser Hinweis und zusätzlich die Größe des bereits eingefügten Anhangs.

Freut mich übrigens, dass es euch gefällt. :D
 

Anhänge

  • OutlookMail.zip
    200,9 KB · Aufrufe: 145
  • OutlookMail.exe Beitrag #5
Bullayer

Bullayer

Schwergewicht
Dabei seit
19.07.2006
Beiträge
24.171
Ort
DE-RLP-COC
Das Programm ist nicht schlecht. Danke.
 
  • OutlookMail.exe Beitrag #7
G

Ghost in the Shell

Gast
Noch genialer wäre es wenn du als Basis ein Open Source/Freeware Mail Programm verwenden würdest. Das ganze noch Standalone, dann könnte man es sehr gut in Entwicklungen einbinden :)
 
  • OutlookMail.exe Beitrag #8
Peter Schirmer

Peter Schirmer

Threadstarter
Dabei seit
14.04.2006
Beiträge
7.060
Alter
42
Ort
7th Avenue, Ecke XP und Vista, 8ter Stock, Wohnung
Der Code ist nicht schwer. Ich habe ihn gerade noch mal ausführlicher kommentiert:

Imports System.IO
Imports Out = Microsoft.Office.Interop.Outlook

Module Module1
Private OutApp As Out.Application = CreateObject(ProgId:="Outlook.Application")

Sub Main()

'Mail-Objekt anlegen
Dim OutMailItem As Out.MailItem = OutApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)

'Objekteigenschaften festlegen
With OutMailItem

'Wichtigkeit
.Importance = Microsoft.Office.Interop.Outlook.OlImportance.olImportanceNormal

'Weitere Argumente
Dim BodyArg As String = "/body="
Dim SubArg As String = "/subject="
Dim FilesArg As String = "/files="
Dim Empf As String = "/to="
Dim Send As String = "/send="

'Variablen für die Verwendung
Dim Dateien() As String
Dim Volumen As Double = 0
Dim inputName As String = ""

'Durchlaufe alle gefundenen Kommandozeilenschalter
For Each s In My.Application.CommandLineArgs

'Text
If s.ToLower.StartsWith(BodyArg) Then

inputName = s.Remove(0, BodyArg.Length)

.Body = inputName

End If

'Betreff
If s.ToLower.StartsWith(SubArg) Then

inputName = s.Remove(0, SubArg.Length)

.Subject = inputName

End If

'Empfänger
If s.ToLower.StartsWith(Empf) Then

inputName = s.Remove(0, Empf.Length)

.To = inputName

End If

'Anhang
If s.ToLower.StartsWith(FilesArg) Then

inputName = s.Remove(0, FilesArg.Length)
Dateien = Directory.GetFiles(inputName)

Try

'Array durchlaufen
For i = 0 To Dateien.GetUpperBound(0)


.Attachments.Add(Dateien(i))

'Dateigröße bestimmen
Dim Eigenschaften As New FileInfo(Dateien(i))
Volumen = Volumen + Eigenschaften.Length

'Variable auflösen
Eigenschaften = Nothing


Next i

Catch ex As Exception

'Ausgabe Fehlermeldung
MsgBox(ex.Message & " Der aktuelle Anhang hat eine Größe von " & Math.Round((Volumen / 1024 / 1024), 2) & " MB.", MsgBoxStyle.Information Or MsgBoxStyle.SystemModal)

End Try

End If

'Automatisches Senden (führt allerdings zu Outlook-Hinweis)
If s.ToLower.StartsWith(Send) Then

inputName = Microsoft.VisualBasic.LCase(s.Remove(0, Send.Length))

If inputName = "true" Then

.Send()

End If

'Bewusst auf FALSE gesetzt
If inputName = "false" Then

.Display()

End If

'Keine Angabe => Mailfenster dennoch anzeigen
If inputName = "" Then

.Display()

End If


End If


Next


.Display()


End With

End Sub

End Module

Projektdateien folgen. :satisfied

Edit: Und hier sind sie.
 

Anhänge

  • OutlookMail.zip
    693,5 KB · Aufrufe: 130
  • OutlookMail.exe Beitrag #9
G

Ghost in the Shell

Gast
Das ist VB oder? Ich muss mal wieder meine Syntax kentnisse auffrischen.
 
  • OutlookMail.exe Beitrag #11
B

bluefisch200

Dabei seit
18.10.2007
Beiträge
2.463
Danke, super :up
Finde ich besser als die .NET interne Möglichkeit(ich weis nun kommt natürlich wieder die Frage auf: "ist das schön so?" aber ist mir eigentlich egal)
 
  • OutlookMail.exe Beitrag #15
Peter Schirmer

Peter Schirmer

Threadstarter
Dabei seit
14.04.2006
Beiträge
7.060
Alter
42
Ort
7th Avenue, Ecke XP und Vista, 8ter Stock, Wohnung
Mir ist heute eine .NET Bibliothek in die Hand gefallen, die ich unbedingt probieren musste. Damit kann man .zip-Dateien anlegen und entpacken. Das Ergebnis findet ihr hier.

Im Anhang an die erzeugte Mail findet sich nun das Archiv "Archiv.zip" mit den gezippten Dateien.

Der Aufruf erfolgt so:

C:\Temp\OutlookMail.exe /body="Wie versprochen, die Unterlagen." /subject="Ihre Unterlagen" /pack="C:\Temp\bin\Release" /to="[email protected]

Ihr ersetzt einfach "/files=" durch "/pack=" ;)

Viel Spaß beim Mailen!
 

Anhänge

  • OutlookMail.zip
    826,6 KB · Aufrufe: 121
  • Bild.png
    Bild.png
    68,5 KB · Aufrufe: 157
  • OutlookMail.exe Beitrag #16
B

bluefisch200

Dabei seit
18.10.2007
Beiträge
2.463
Kurze Frage...ist Open Source oder? Würde das Ganze gerne in ne DLL Packen...für weitere Projekte sicher besser...
 
  • OutlookMail.exe Beitrag #18
S

smitty

Dabei seit
09.11.2008
Beiträge
8
Hab es auch heruntergeladen und find es recht gut. Könnte man nicht noch eine Überprüfung einbauen, ob Outlook überhaupt auf dem PC installiert ist.
 
  • OutlookMail.exe Beitrag #19
Peter Schirmer

Peter Schirmer

Threadstarter
Dabei seit
14.04.2006
Beiträge
7.060
Alter
42
Ort
7th Avenue, Ecke XP und Vista, 8ter Stock, Wohnung
Ich habe den Code um ein Try...Catch erweitert. Sollte irgendein Fehler auftauchen, so wird die Fehlermeldung ausgegeben. Aber man sollte das Programm natürlich nur einsetzen, wenn Outlook auch installiert ist. ;)

Der aktuelle Quellcode:

Imports System.IO
Imports Out = Microsoft.Office.Interop.Outlook
Imports Zip

Module Module1
Private OutApp As Out.Application = CreateObject(ProgId:="Outlook.Application")

Sub Main()

Try

'Mail-Objekt anlegen
Dim OutMailItem As Out.MailItem = OutApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)

'Objekteigenschaften festlegen
With OutMailItem

'Wichtigkeit
.Importance = Microsoft.Office.Interop.Outlook.OlImportance.olImportanceNormal

'Weitere Argumente
Dim BodyArg As String = "/body="
Dim SubArg As String = "/subject="
Dim FilesArg As String = "/files="
Dim Empf As String = "/to="
Dim Send As String = "/send="
Dim Pack As String = "/pack="


'Variablen für die Verwendung
Dim Dateien() As String
Dim Volumen As Double = 0
Dim inputName As String = ""
Dim Zip As New Packer
Dim FilesToZip As String
Dim ArchivName As String


'Durchlaufe alle gefundenen Kommandozeilenschalter
For Each s In My.Application.CommandLineArgs

'Text
If s.ToLower.StartsWith(BodyArg) Then

inputName = s.Remove(0, BodyArg.Length)

.Body = inputName

End If

'Betreff
If s.ToLower.StartsWith(SubArg) Then

inputName = s.Remove(0, SubArg.Length)

.Subject = inputName

End If

'Empfänger
If s.ToLower.StartsWith(Empf) Then

inputName = s.Remove(0, Empf.Length)

.To = inputName

End If

'Packen
If s.ToLower.StartsWith(Pack) Then

inputName = s.Remove(0, Pack.Length)



End If

'Anhang
If s.ToLower.StartsWith(FilesArg) Then

inputName = s.Remove(0, FilesArg.Length)

Dateien = Directory.GetFiles(inputName)

Try

'Array durchlaufen
For i = 0 To Dateien.GetUpperBound(0)

.Attachments.Add(Dateien(i))

'Dateigröße bestimmen
Dim Eigenschaften As New FileInfo(Dateien(i))
Volumen = Volumen + Eigenschaften.Length

'Variable auflösen
Eigenschaften = Nothing


Next i

Catch ex As Exception

'Ausgabe Fehlermeldung
MsgBox(ex.Message & " Der aktuelle Anhang hat eine Größe von " & Math.Round((Volumen / 1024 / 1024), 2) & " MB.", MsgBoxStyle.Information Or MsgBoxStyle.SystemModal)

End Try

End If

'Packen
If s.ToLower.StartsWith(Pack) Then

inputName = s.Remove(0, Pack.Length)

'ArchivName = "OutlookMailArchiv_" & Date.Now.Hour & Date.Now.Minute & Date.Now.Second & ".zip"
ArchivName = "Archiv.zip"

If File.Exists(My.Application.Info.DirectoryPath.ToString & "\Archiv.zip") Then

File.Delete(My.Application.Info.DirectoryPath.ToString & "\Archiv.zip")

End If

Try

'Array durchlaufen
Zip.Packen(My.Application.Info.DirectoryPath & "\" & ArchivName, inputName)

.Attachments.Add(My.Application.Info.DirectoryPath & "\" & ArchivName)

Catch ex As Exception

MsgBox(ex.Message.ToString, MsgBoxStyle.OkOnly Or MsgBoxStyle.Information, "Hinweis")

End Try

End If

'Automatisches Senden (führt allerdings zu Outlook-Hinweis)
If s.ToLower.StartsWith(Send) Then

inputName = Microsoft.VisualBasic.LCase(s.Remove(0, Send.Length))

If inputName = "true" Then

.Send()

End If

'Bewusst auf FALSE gesetzt
If inputName = "false" Then

.Display()

End If

'Keine Angabe => Mailfenster dennoch anzeigen
If inputName = "" Then

.Display()

End If


End If


Next


.Display()


End With

Catch ex As Exception

MsgBox(ex.Message, MsgBoxStyle.OkOnly Or MsgBoxStyle.Exclamation Or MsgBoxStyle.SystemModal, "Hinweis")

End Try

End Sub

End Module
 

Anhänge

  • OutlookMail.zip
    1,2 MB · Aufrufe: 137
Thema:

OutlookMail.exe

OutlookMail.exe - Ähnliche Themen

Die Datei mapi32.dll bzw. der Aufruf von Outlook 2007 aus anderen Programmen heraus geht seit Creato: Die Datei mapi32.dll bzw. der Aufruf von Outlook 2007 aus anderen Programmen heraus geht seit Creators Update auf 1709 nicht mehr!! Sämtliche...
Start Problems for own applications (VS 2017 C# .NET 4.5 App): Hallo liebe Community, ich habe eine Anwendung entwickelt (mit MS Visual Studio Community 2017 Version 15.7.2 - C# .NET 4.5 - Verwendung von...
Windows 10 Insider erhalten mit der Build 17723 (Fast Ring) und 18204 (Skip Ahead) umfangreiche Verbesserungen: Im Rahmen der vergangenen Nacht hat Dona Sarkar als Chefin des Insider-Programms nun doppelt auf den roten Button zur Freigabe von zwei neuen...
Im Anfang war der Sputnik-Schock – Eine kurze Geschichte des Internets vom APRANET bis Web 4.0: Wir leben in einem digitalen Zeitalter. Große Teile unser Arbeits- und Privatwelt finden dort statt und werden teilweise sogar hineingetragen. In...
Systematischer Ausfall externer Festplatten ??: Meine Frage wer hat auch nachstehende oder ähnliche Erfahrungen bei Kopieren vieler und großer Dateien auf externe Festplatten gemacht? Seit...
Oben