diff --git a/DDMonorepo.sln b/DDMonorepo.sln
index a7099c06..0aee69ab 100644
--- a/DDMonorepo.sln
+++ b/DDMonorepo.sln
@@ -21,6 +21,8 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "TestGUI", "TestGUI\TestGUI.
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Modules.Database", "Modules.Database\Modules.Database.vbproj", "{EAF0EA75-5FA7-485D-89C7-B2D843B03A96}"
EndProject
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Messaging", "Message\Messaging.vbproj", "{AF664D85-0A4B-4BAB-A2F8-83110C06553A}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -47,6 +49,10 @@ Global
{EAF0EA75-5FA7-485D-89C7-B2D843B03A96}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EAF0EA75-5FA7-485D-89C7-B2D843B03A96}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EAF0EA75-5FA7-485D-89C7-B2D843B03A96}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AF664D85-0A4B-4BAB-A2F8-83110C06553A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AF664D85-0A4B-4BAB-A2F8-83110C06553A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AF664D85-0A4B-4BAB-A2F8-83110C06553A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AF664D85-0A4B-4BAB-A2F8-83110C06553A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -57,6 +63,7 @@ Global
{4C86DF8F-A280-40D4-85B0-10B1BF66C15C} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{93130E7D-A950-4CBD-A0D9-7A6FAF94DDC0} = {8FFE925E-8B84-45F1-93CB-32B1C96F41EB}
{EAF0EA75-5FA7-485D-89C7-B2D843B03A96} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
+ {AF664D85-0A4B-4BAB-A2F8-83110C06553A} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C1BE4090-A0FD-48AF-86CB-39099D14B286}
diff --git a/Message/Email.vb b/Message/Email.vb
new file mode 100644
index 00000000..3d66f559
--- /dev/null
+++ b/Message/Email.vb
@@ -0,0 +1,108 @@
+Imports System
+Imports Independentsoft.Email
+Imports Independentsoft.Email.Smtp
+Imports Independentsoft.Email.Mime
+Public Class Email
+ Private Shared Logger As NLog.Logger = NLog.LogManager.GetCurrentClassLogger
+ Public Function NewSendMail(ByVal mailSubject As String, ByVal mailBody As String, mailto As String,
+ mailfrom As String, mailsmtp As String, mailport As Integer, mailUser As String, mailPW As String,
+ AUTH_TYPE As String, Optional attment As String = "")
+ Dim empfaenger As String()
+ If mailto.Contains(";") Then
+ empfaenger = mailto.Split(";")
+ Else
+ ReDim Preserve empfaenger(0)
+ empfaenger(0) = mailto
+ End If
+ Dim _error As Boolean = False
+ 'Für jeden Empfänger eine Neue Mail erzeugen
+ For Each _mailempfaenger As String In empfaenger
+ Try
+ Dim message As New Message With {
+ .From = New Mailbox(mailfrom, mailfrom)
+ }
+ message.[To].Add(New Mailbox(_mailempfaenger))
+ message.Subject = mailSubject
+
+ Dim textBodyPart As New BodyPart With {
+ .ContentType = New ContentType("text", "plain", "utf-8"),
+ .ContentTransferEncoding = ContentTransferEncoding.QuotedPrintable,
+ .Body = mailBody
+ }
+ message.BodyParts.Add(textBodyPart)
+ If attment <> String.Empty Then
+ If System.IO.File.Exists(attment) Then
+ Dim attachment1 As New Attachment(attment)
+ If attment.ToLower.EndsWith("pdf") Then
+ attachment1.ContentType = New ContentType("application", "pdf")
+ ElseIf attment.ToLower.EndsWith("jpg") Then
+ attachment1.ContentType = New ContentType("application", "jpg")
+ ElseIf attment.ToLower.EndsWith("docx") Then
+ attachment1.ContentType = New ContentType("application", "MS-word")
+ End If
+ message.BodyParts.Add(attachment1)
+ End If
+ End If
+ Dim client As SmtpClient
+ Try
+ client = New SmtpClient(mailsmtp, mailport)
+ Catch ex As Exception
+ Logger.Warn("clsEmail.SendMail(Create Client): " & ex.Message)
+ _error = True
+ Continue For
+ End Try
+ Try
+ client.Connect()
+ Catch ex As Exception
+ Logger.Warn("clsEmail.SendMail(Client.Connect): " & ex.Message)
+ _error = True
+ Continue For
+ End Try
+ Logger.Info("Connected to Client!")
+ If AUTH_TYPE = "SSL" Then
+ client.EnableSsl = True
+ client.ValidateRemoteCertificate = True
+ Logger.Info("Authentification via SSL.")
+ ElseIf AUTH_TYPE = "TLS" Then
+ Try
+ client.EnableSsl = False
+ Logger.Info("Authentification via TLS. SSL enabled")
+ 'client.StartTls()
+ Catch ex As Exception
+ Logger.Warn("clsEmail.SendMail(Client.StartTls): " & ex.Message)
+ _error = True
+ Continue For
+ End Try
+
+ End If
+ Try
+ client.Login(mailUser, mailPW)
+ Logger.Info("Logged in!")
+ Catch ex As Exception
+ Logger.Warn("clsEmail.SendMail(Client.Login): " & ex.Message)
+ _error = True
+ client.Disconnect()
+ Continue For
+ End Try
+ Try
+ client.Send(message)
+ Logger.Info("Message to " & _mailempfaenger & " has been send.")
+ Catch ex As Exception
+ Logger.Warn("clsEmail.SendMail(Client.Send): " & ex.Message)
+ _error = True
+ client.Disconnect()
+ Continue For
+ End Try
+ client.Disconnect()
+ Catch ex As Exception
+ Logger.Error(ex)
+ _error = True
+ End Try
+ Next
+ If _error = True Then
+ Return False
+ Else
+ Return True
+ End If
+ End Function
+End Class
diff --git a/Message/Messaging.vbproj b/Message/Messaging.vbproj
new file mode 100644
index 00000000..ed437d9a
--- /dev/null
+++ b/Message/Messaging.vbproj
@@ -0,0 +1,117 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {AF664D85-0A4B-4BAB-A2F8-83110C06553A}
+ Library
+ DigitalData.Modules.Messaging
+ DigitalData.Modules.Messaging
+ 512
+ Windows
+ v4.6.1
+
+
+ true
+ full
+ true
+ true
+ bin\Debug\
+ DigitalData.Modules.Messaging.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ pdbonly
+ false
+ true
+ true
+ bin\Release\
+ DigitalData.Modules.Messaging.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ On
+
+
+ Binary
+
+
+ Off
+
+
+ On
+
+
+
+ P:\Projekte DIGITAL DATA\DIGITAL DATA - Entwicklung\DLL_Bibliotheken\Email .NET\Bin\Independentsoft.Email.dll
+
+
+
+ ..\packages\NLog.4.5.8\lib\net45\NLog.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+ Application.myapp
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+ VbMyResourcesResXFileCodeGenerator
+ Resources.Designer.vb
+ My.Resources
+ Designer
+
+
+
+
+ MyApplicationCodeGenerator
+ Application.Designer.vb
+
+
+ SettingsSingleFileGenerator
+ My
+ Settings.Designer.vb
+
+
+
+
+
\ No newline at end of file
diff --git a/Message/My Project/Application.Designer.vb b/Message/My Project/Application.Designer.vb
new file mode 100644
index 00000000..8ab460ba
--- /dev/null
+++ b/Message/My Project/Application.Designer.vb
@@ -0,0 +1,13 @@
+'------------------------------------------------------------------------------
+'
+' Dieser Code wurde von einem Tool generiert.
+' Laufzeitversion:4.0.30319.42000
+'
+' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+' der Code erneut generiert wird.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
diff --git a/Message/My Project/Application.myapp b/Message/My Project/Application.myapp
new file mode 100644
index 00000000..758895de
--- /dev/null
+++ b/Message/My Project/Application.myapp
@@ -0,0 +1,10 @@
+
+
+ false
+ false
+ 0
+ true
+ 0
+ 1
+ true
+
diff --git a/Message/My Project/AssemblyInfo.vb b/Message/My Project/AssemblyInfo.vb
new file mode 100644
index 00000000..f862895e
--- /dev/null
+++ b/Message/My Project/AssemblyInfo.vb
@@ -0,0 +1,35 @@
+Imports System
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' Allgemeine Informationen über eine Assembly werden über die folgenden
+' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
+' die einer Assembly zugeordnet sind.
+
+' Werte der Assemblyattribute überprüfen
+
+
+
+
+
+
+
+
+
+
+'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird.
+
+
+' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
+'
+' Hauptversion
+' Nebenversion
+' Buildnummer
+' Revision
+'
+' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
+' übernehmen, indem Sie "*" eingeben:
+'
+
+
+
diff --git a/Message/My Project/Resources.Designer.vb b/Message/My Project/Resources.Designer.vb
new file mode 100644
index 00000000..c581f02e
--- /dev/null
+++ b/Message/My Project/Resources.Designer.vb
@@ -0,0 +1,63 @@
+'------------------------------------------------------------------------------
+'
+' Dieser Code wurde von einem Tool generiert.
+' Laufzeitversion:4.0.30319.42000
+'
+' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+' der Code erneut generiert wird.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+Imports System
+
+Namespace My.Resources
+
+ 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
+ '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
+ 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
+ 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
+ '''
+ ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
+ '''
+ _
+ Friend Module Resources
+
+ Private resourceMan As Global.System.Resources.ResourceManager
+
+ Private resourceCulture As Global.System.Globalization.CultureInfo
+
+ '''
+ ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
+ '''
+ _
+ Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
+ Get
+ If Object.ReferenceEquals(resourceMan, Nothing) Then
+ Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("DigitalData.Modules.Messaging.Resources", GetType(Resources).Assembly)
+ resourceMan = temp
+ End If
+ Return resourceMan
+ End Get
+ End Property
+
+ '''
+ ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
+ ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
+ '''
+ _
+ Friend Property Culture() As Global.System.Globalization.CultureInfo
+ Get
+ Return resourceCulture
+ End Get
+ Set
+ resourceCulture = value
+ End Set
+ End Property
+ End Module
+End Namespace
diff --git a/Message/My Project/Resources.resx b/Message/My Project/Resources.resx
new file mode 100644
index 00000000..af7dbebb
--- /dev/null
+++ b/Message/My Project/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Message/My Project/Settings.Designer.vb b/Message/My Project/Settings.Designer.vb
new file mode 100644
index 00000000..3d97a058
--- /dev/null
+++ b/Message/My Project/Settings.Designer.vb
@@ -0,0 +1,73 @@
+'------------------------------------------------------------------------------
+'
+' Dieser Code wurde von einem Tool generiert.
+' Laufzeitversion:4.0.30319.42000
+'
+' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+' der Code erneut generiert wird.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+
+Namespace My
+
+ _
+ Partial Friend NotInheritable Class MySettings
+ Inherits Global.System.Configuration.ApplicationSettingsBase
+
+ Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
+
+#Region "Automatische My.Settings-Speicherfunktion"
+#If _MyType = "WindowsForms" Then
+ Private Shared addedHandler As Boolean
+
+ Private Shared addedHandlerLockObject As New Object
+
+ _
+ Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
+ If My.Application.SaveMySettingsOnExit Then
+ My.Settings.Save()
+ End If
+ End Sub
+#End If
+#End Region
+
+ Public Shared ReadOnly Property [Default]() As MySettings
+ Get
+
+#If _MyType = "WindowsForms" Then
+ If Not addedHandler Then
+ SyncLock addedHandlerLockObject
+ If Not addedHandler Then
+ AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
+ addedHandler = True
+ End If
+ End SyncLock
+ End If
+#End If
+ Return defaultInstance
+ End Get
+ End Property
+ End Class
+End Namespace
+
+Namespace My
+
+ _
+ Friend Module MySettingsProperty
+
+ _
+ Friend ReadOnly Property Settings() As Global.DigitalData.Modules.Messaging.My.MySettings
+ Get
+ Return Global.DigitalData.Modules.Messaging.My.MySettings.Default
+ End Get
+ End Property
+ End Module
+End Namespace
diff --git a/Message/My Project/Settings.settings b/Message/My Project/Settings.settings
new file mode 100644
index 00000000..85b890b3
--- /dev/null
+++ b/Message/My Project/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/Message/SMS.vb b/Message/SMS.vb
new file mode 100644
index 00000000..eeab6d15
--- /dev/null
+++ b/Message/SMS.vb
@@ -0,0 +1,3 @@
+Public Class SMS
+
+End Class
diff --git a/Message/packages.config b/Message/packages.config
new file mode 100644
index 00000000..a3ffb2eb
--- /dev/null
+++ b/Message/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file