DVAG_Mailverteiler/mail_sending.vb
2023-01-06 08:51:03 +01:00

369 lines
12 KiB
VB.net

Imports MySql.Data.MySqlClient
Imports System.Net.Mail
Public Class mail_sending
Dim connStr As String = "server=localhost;user=root;database=dvag_mailing;port=3306;password=;charset=utf8;"
Dim connstr_dvag As String = "server=localhost;user=root;database=dvag;port=3306;password=;charset=utf8;"
Dim conn As New MySqlConnection(connStr)
Dim conn_dvag As New MySqlConnection(connstr_dvag)
Dim sqlcmd As New MySqlCommand
Dim dr
Dim dw
Private Sub bt_start_Click(sender As Object, e As EventArgs) Handles bt_start.Click
System.Windows.Forms.Application.DoEvents()
'ID einlesen
Try
conn.Open()
sqlcmd = New MySqlCommand("SELECT id FROM data where send = 0 and mailing_ohne_freigabe = 1", conn)
dr = sqlcmd.ExecuteScalar()
lb_id.Text = dr
conn.Close()
rtb_log.Text = rtb_log.Text & DateTime.Now & ": ID " & lb_id.Text & " erfolgreich eingelesen" & vbNewLine
rtb_log.ScrollToCaret()
Catch ex As System.Exception
MsgBox(ex.ToString)
End Try
If lb_id.Text = "" Then
rtb_log.Text = rtb_log.Text & DateTime.Now & ": Keine Mailings zum verarbeiten gefunden" & vbNewLine
Else
'von einlesen
Try
conn.Open()
sqlcmd = New MySqlCommand("SELECT `from` FROM data where ID = " & lb_id.Text & "", conn)
dr = sqlcmd.ExecuteScalar()
tb_von.Text = dr
conn.Close()
rtb_log.Text = rtb_log.Text & DateTime.Now & ": Mail von erfolgreich eingelesen" & vbNewLine
rtb_log.ScrollToCaret()
Catch ex As System.Exception
MsgBox(ex.ToString)
End Try
'an einlesen
Try
conn.Open()
sqlcmd = New MySqlCommand("SELECT `to` FROM data where ID = " & lb_id.Text & "", conn)
dr = sqlcmd.ExecuteScalar()
tb_an.Text = dr
conn.Close()
rtb_log.Text = rtb_log.Text & DateTime.Now & ": Mail an erfolgreich eingelesen" & vbNewLine
rtb_log.ScrollToCaret()
Catch ex As System.Exception
MsgBox(ex.ToString)
End Try
'Betreff einlesen
Try
conn.Open()
sqlcmd = New MySqlCommand("SELECT `subject` FROM data where ID = " & lb_id.Text & "", conn)
dr = sqlcmd.ExecuteScalar()
tb_betreff.Text = dr
conn.Close()
rtb_log.Text = rtb_log.Text & DateTime.Now & ": Betreff erfolgreich eingelesen" & vbNewLine
rtb_log.ScrollToCaret()
Catch ex As System.Exception
MsgBox(ex.ToString)
End Try
'text einlesen
Try
conn.Open()
sqlcmd = New MySqlCommand("SELECT `text` FROM data where ID = " & lb_id.Text & "", conn)
dr = sqlcmd.ExecuteScalar()
rtb_mail_body.Text = dr
conn.Close()
rtb_log.Text = rtb_log.Text & DateTime.Now & ": Mail Body erfolgreich eingelesen" & vbNewLine
rtb_log.ScrollToCaret()
Catch ex As System.Exception
MsgBox(ex.ToString)
End Try
'AK einlesen
Try
conn.Open()
sqlcmd = New MySqlCommand("SELECT `gruppe` FROM `zugriff` where sender_mail = '" & tb_an.Text & "'", conn)
dr = sqlcmd.ExecuteScalar()
tb_ak_gruppe.Text = dr
conn.Close()
rtb_log.Text = rtb_log.Text & DateTime.Now & ": Gruppe erfolgreich eingelesen" & vbNewLine
rtb_log.ScrollToCaret()
Catch ex As System.Exception
MsgBox(ex.ToString)
End Try
'sender_mail einlesen
Try
conn.Open()
sqlcmd = New MySqlCommand("SELECT `sender_mail` FROM `zugriff` where sender_mail = '" & tb_an.Text & "'", conn)
dr = sqlcmd.ExecuteScalar()
tb_sender_mail.Text = dr
conn.Close()
rtb_log.Text = rtb_log.Text & DateTime.Now & ": Sender Mail Adresse erfolgreich eingelesen" & vbNewLine
rtb_log.ScrollToCaret()
Catch ex As System.Exception
MsgBox(ex.ToString)
End Try
'sender_name einlesen
Try
conn.Open()
sqlcmd = New MySqlCommand("SELECT `sender_name` FROM `zugriff` where sender_mail = '" & tb_an.Text & "'", conn)
dr = sqlcmd.ExecuteScalar()
tb_sender_name.Text = dr
conn.Close()
rtb_log.Text = rtb_log.Text & DateTime.Now & ": Sender Name erfolgreich eingelesen" & vbNewLine
rtb_log.ScrollToCaret()
Catch ex As System.Exception
MsgBox(ex.ToString)
End Try
If tb_ak_gruppe.Text = "" Then
' Mail an geschaeftsstelle
'MsgBox("Keine Empfänger definiert!")
rtb_log.Text = rtb_log.Text & DateTime.Now & ": Keine Empfänger definiert!" & vbNewLine
Exit Sub
Else
conn.Open()
'Regionalforum
If tb_ak_gruppe.Text Like "Forum" Then
sqlcmd = New MySqlCommand("SELECT `email` FROM `tl_member` where xt_regioforum or xt_moreregio like '%" & tb_ak_gruppe.Text & "%' and DISABLE = ''", conn)
'Arbeitskreis
ElseIf tb_ak_gruppe.Text Like "AK" Then
sqlcmd = New MySqlCommand("SELECT `email` FROM `tl_member` where xt_arbeitskre like '%" & tb_ak_gruppe.Text & "%' and DISABLE = ''", conn)
'Funktionaere
ElseIf tb_ak_gruppe.Text Like "Funktionäre" Then
sqlcmd = New MySqlCommand("SELECT `email` FROM `funktionaere`", conn)
'Vorstand
ElseIf tb_ak_gruppe.Text Like "Vorstand" Then
sqlcmd = New MySqlCommand("SELECT `email` FROM `vorstand`", conn)
'Mitglieder
ElseIf tb_ak_gruppe.Text Like "Mitglieder" Then
sqlcmd = New MySqlCommand("select email from newsletter union select email from dvag.tl.member where disable = ''", conn)
'Test
ElseIf tb_ak_gruppe.Text Like "Test" Then
sqlcmd = New MySqlCommand("SELECT `email` FROM `test`", conn)
Else
End If
rtb_log.Text = rtb_log.Text & DateTime.Now & ": Empfänger SQL gesetzt" & vbNewLine
MsgBox(sqlcmd.ToString)
rtb_log.ScrollToCaret()
Try
Dim DataAdapter As New MySqlDataAdapter
DataAdapter.SelectCommand = sqlcmd
Dim chemicalInventory As New DataTable()
DataAdapter.Fill(chemicalInventory)
For Each row As DataRow In chemicalInventory.Rows
' MsgBox(row.Item("email"))
dr = (row.Item("email"))
rtb_empfaengergruppe.Text = rtb_empfaengergruppe.Text & dr & vbNewLine
Next
Dim last = rtb_empfaengergruppe.Text.LastIndexOf("")
If last > 0 Then
rtb_empfaengergruppe.Text = rtb_empfaengergruppe.Text.Substring(0, last + 1)
Dim beforelast = rtb_empfaengergruppe.Text.LastIndexOf("")
rtb_empfaengergruppe.Text = rtb_empfaengergruppe.Text.Substring(0, beforelast + 0)
Else
'rtb_empfaengergruppe.Text = ""
End If
conn.Close()
rtb_log.Text = rtb_log.Text & DateTime.Now & ": Empfänger erfolgreich eingelesen" & vbNewLine
rtb_log.ScrollToCaret()
Catch ex As Exception
'MsgBox(ex.ToString)
End Try
End If
If rtb_empfaengergruppe.Text = "" Then rtb_log.Text = rtb_log.Text & DateTime.Now & ": Es wurde keine Mail versendet" & vbNewLine
End If
Dim tmp As New System.Text.StringBuilder
For Each line As String In rtb_empfaengergruppe.Lines
If line.Trim.Length > 0 Then tmp.AppendLine(line)
Next
rtb_empfaengergruppe.Text = tmp.ToString
System.Windows.Forms.Application.DoEvents()
save_log()
mail_versenden()
save_log()
update_sql_gesendete_mails()
save_log()
felder_leeren()
save_log()
End Sub
Public Sub mail_versenden()
System.Windows.Forms.Application.DoEvents()
If rtb_empfaengergruppe.Text = "" Then Exit Sub
Dim Msg As New MailMessage
Dim myCredentials As New System.Net.NetworkCredential
myCredentials.UserName = "m.haase"
myCredentials.Password = "Start2013!"
Msg.IsBodyHtml = True
Dim mySmtpsvr As New SmtpClient()
mySmtpsvr.Host = "remote.it-professional.biz" 'bei web.de
mySmtpsvr.Port = 27
mySmtpsvr.EnableSsl = 0
mySmtpsvr.UseDefaultCredentials = False
mySmtpsvr.Credentials = myCredentials
Try
'Msg.From = New MailAddress(tb_sender_mail.Text)
Msg.From = New MailAddress(tb_sender_mail.Text, tb_sender_name.Text)
Dim empfaenger As String = rtb_empfaengergruppe.Text
' MsgBox(empfaenger)
'MsgBox(empfaenger.Replace(vbLf, ", "))
empfaenger = empfaenger.Replace(vbLf, ", ")
'MsgBox(empfaenger)
empfaenger = (empfaenger.Substring(0, empfaenger.Length - 2))
'MsgBox(empfaenger)
Msg.Bcc.Add(empfaenger)
Msg.Subject = tb_betreff.Text
Msg.Body = rtb_mail_body.Text
Try
For Each item In My.Computer.FileSystem.GetFiles("C:\DVAG\Mailing\" & lb_id.Text, FileIO.SearchOption.SearchTopLevelOnly, "*.*")
'MsgBox(item)
Dim myAttch = Msg.Attachments
myAttch.Add(New System.Net.Mail.Attachment(item))
Next
Catch ex As System.Exception
MsgBox(Err.Number & ex.Message & ex.StackTrace.ToString)
End Try
mySmtpsvr.Send(Msg)
rtb_log.Text = rtb_log.Text & DateTime.Now & ": E-Mail gesendet." & vbNewLine
rtb_log.Text = rtb_log.Text & DateTime.Now & ": Auftrag für die ID " & lb_id.Text & " erfolgreich abgeschlossen." & vbNewLine
Catch ex As Exception
MsgBox(Err.Number & ex.Message & ex.StackTrace.ToString) 'Falls ein Fehler auftritt wird eine MsgBox angezeigt
Exit Sub
End Try
End Sub
Public Sub felder_leeren()
System.Windows.Forms.Application.DoEvents()
rtb_empfaengergruppe.Clear()
tb_ak_gruppe.Clear()
tb_sender_mail.Clear()
tb_von.Clear()
tb_an.Clear()
tb_betreff.Clear()
rtb_mail_body.Clear()
lb_id.Text = ""
If My.Settings.mail_auslesen = "1" Then mail_auslesen.Timer_mail_auslesen.Start()
mail_auslesen.Show()
Me.Hide()
End Sub
Public Sub update_sql_gesendete_mails()
System.Windows.Forms.Application.DoEvents()
Try
conn.Open()
sqlcmd = New MySqlCommand("update data set `send` = '1', `verarbeitet_am` = '" & DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") & "' where ID = '" & lb_id.Text & "'", conn)
dr = sqlcmd.ExecuteScalar()
conn.Close()
rtb_log.Text = rtb_log.Text & DateTime.Now & ": Vorgang als abgeschlossen in der DB markiert" & vbNewLine
rtb_log.ScrollToCaret()
Catch ex As System.Exception
MsgBox(ex.ToString)
End Try
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
System.Windows.Forms.Application.DoEvents()
Dashboard.Show()
Me.Hide()
End Sub
Public Sub save_log()
System.Windows.Forms.Application.DoEvents()
rtb_log.SaveFile("c:\DVAG\" & DateTime.Now = ("HH__dd_MM_yyyy") & "mail_log.txt", RichTextBoxStreamType.PlainText)
End Sub
End Class