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