Files
SDL/WoelflEmail/Mail.vb

186 lines
8.3 KiB
VB.net

Imports System.Net.Mail
Imports System.IO
Imports System.Data.SqlClient
Module Mail
Dim sPath As String = System.AppDomain.CurrentDomain.BaseDirectory
Dim last_sent As String = sPath & "\last_sent.txt" '" & Now.ToString("ddMMyyyyHHmmss") & ".csv"
Sub Main()
If Not IO.File.Exists(last_sent) Then
IO.File.Create(last_sent)
End If
System.Console.WriteLine("Starte Wölfl-Mail...")
If SendEmail() Then
Try
Dim outFile As IO.StreamWriter = Nothing
outFile = My.Computer.FileSystem.OpenTextFileWriter(last_sent, False)
outFile.Write(Now.AddDays(-1).ToShortDateString)
outFile.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If
End Sub
Function getDateFromFile() As String
Try
Dim instr = New StreamReader(last_sent)
Dim d As Date = CDate(instr.ReadLine).AddDays(1)
instr.Close()
Return d
Catch ex As Exception
Return ""
End Try
End Function
Private Function SendEmail() As Boolean
Dim Msg As New MailMessage
Dim myCredentials As New System.Net.NetworkCredential
myCredentials.UserName = "al@verag.ag"
myCredentials.Password = "Luxandreas#2"
Msg.IsBodyHtml = False
Dim mySmtpsvr As New SmtpClient()
mySmtpsvr.Host = "smtp.1und1.de" 'bei web.de
mySmtpsvr.Port = 587 '25
mySmtpsvr.UseDefaultCredentials = False
mySmtpsvr.Credentials = myCredentials
System.Console.WriteLine("E-Mail Daten initialisiert...")
Try
Dim datum As String = Now.AddDays(-1).ToShortDateString
Dim von = getDateFromFile()
If von = "" Then von = datum
Dim bis = datum
System.Console.WriteLine("Erstelle CSV...")
Dim csv As String = genCSV(von, bis)
System.Console.WriteLine("CSV erstellt...")
If csv <> "" And Not csv.StartsWith("ERROR: ") Then
System.Console.WriteLine("Sende E-Mail...")
Msg.From = New MailAddress("al@verag.ag")
Msg.To.Add("al@verag.ag")
Msg.Subject = "VERAG: Gutschriften/Rechnungen " & von & "-" & bis
Msg.Body = "Sehr geehrte Damen und Herren," & vbNewLine & vbNewLine & "anbei erhalten Sie die Gutschriften/Rechnungen im Zeitraum: " & von & "-" & bis & ". " & vbNewLine & vbNewLine & "Mit frendlichen Grüßen " & vbNewLine & "Ihr VERAG MDM-TEAM" & vbNewLine & vbNewLine & vbNewLine & "Automatisch generiertes E-Mail."
Dim attachment As Attachment = New Attachment(File.OpenRead(csv), "WOELFL_" & von & "-" & bis & ".csv")
Msg.Attachments.Add(attachment)
mySmtpsvr.Send(Msg)
System.Console.WriteLine("E-Mail gesendet.")
' MsgBox("E-Mail gesendet.", MsgBoxStyle.Information, Title:="Information")
System.Console.WriteLine("Erfolgreich!")
Return True
Else
System.Console.WriteLine(csv)
Threading.Thread.Sleep(1000)
' System.Console.WriteLine("Programm beendet in 5")
' Threading.Thread.Sleep(1000)
' System.Console.WriteLine("Programm beendet in 4")
' Threading.Thread.Sleep(1000)
System.Console.WriteLine("Programm beendet in 3")
Threading.Thread.Sleep(1000)
System.Console.WriteLine("Programm beendet in 2")
Threading.Thread.Sleep(1000)
System.Console.WriteLine("Programm beendet in 1")
Threading.Thread.Sleep(1000)
End If
Catch ex As Exception
MsgBox(Err.Number & ex.Message & ex.StackTrace.ToString) 'Falls ein Fehler auftritt wird eine MsgBox angezeigt
End Try
Return False
End Function
Public Function genCSV(von, bis) As String
Try
Dim sqlstr = " SELECT CASE [BelegartenNr] WHEN 71 THEN 'GS' " &
" WHEN 70 THEN 'RG' " &
" END AS [BelegArt] " &
" ,[RechnungsNr] " &
" ,CONVERT(VARCHAR(10), [RechnungsDatum], 104) as [RechnungsDatum] " &
" ,[FilialenNr],[AbfertigungsNr],[UnterNr] " &
" ,CONVERT(VARCHAR(10), [Abfertigungsdatum], 104) as [Abfertigungsdatum] " &
" ,isnull(Adressen.WölflKundenNr,'') as WölflKundenNr " &
" ,CASE WHEN [EmpfängerStraße] IS NULL THEN [EmpfängerName 1] " &
" ELSE [EmpfängerName 1] + ' ' +[EmpfängerName 2] " &
" END AS [Empfänger] " &
" ,CASE WHEN [EmpfängerStraße] IS NULL THEN [EmpfängerName 2] " &
" ELSE [EmpfängerStraße] " &
" END AS [EmpfängerAdresse 1] " &
" ,[EmpfängerOrt] as [EmpfängerAdresse 2] " &
" ,[Packstücke und Warenbezeichnung] as Beschreibung,[LeistungsNr],[LeistungsBez],[Steuersatz %] ,[SteuerpflichtigerGesamtbetrag] as [SteuerpflichtigerGesamtbetrag Netto] " &
" ,[SteuerfreierGesamtbetrag],[SteuerpflichtigerBetrag] as [SteuerpflichtigerBetrag Netto] ,[SteuerfreierBetrag] " &
" FROM [VERAG].[dbo].[Rechnungsausgang] inner join [VERAG].[dbo].[RechnungsausgangPositionen] on Rechnungsausgang.[RK_ID]=RechnungsausgangPositionen.[RK_ID] " &
" inner join [VERAG].[dbo].Adressen on Rechnungsausgang.EmpfängerKundenNr=Adressen.AdressenNr " &
" WHERE RechnungsKundenNr = 150000 " &
" and RechnungsDatum between '" & von & "' and '" & bis & "'"
' MsgBox(sqlstr)
' Dim SQL As New System.Data.Sql
Dim dt As DataTable = loadDgvBySql(sqlstr)
Dim fn As String = sPath & "WOELFL.csv" '" & Now.ToString("ddMMyyyyHHmmss") & ".csv"
Dim outFile As IO.StreamWriter = Nothing
Try
outFile = My.Computer.FileSystem.OpenTextFileWriter(fn, False)
Catch ex As Exception
MsgBox(ex.Message)
Return "ERROR: Schreibfehler"
End Try
System.Console.WriteLine("Vorhandene Datensätze: " & dt.Rows.Count)
If dt.Rows.Count = 0 Then
Return "ERROR: KEINE DATEN"
End If
Dim clmns As String = ""
For i = 0 To dt.Columns.Count - 1
clmns &= dt.Columns(i).ColumnName.ToString().Replace(";", ",") & ";"
Next
outFile.WriteLine(clmns)
For i = 0 To dt.Rows.Count - 1
clmns = ""
For j = 0 To dt.Columns.Count - 1
Dim o As Object = dt.Rows(i).Item(j).ToString
clmns &= dt.Rows(i).Item(j).ToString() & ";"
Next
outFile.WriteLine(clmns)
Next
outFile.Close()
Return fn
Catch ex As Exception
MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
Return "ERROR: " & ex.Message
End Try
End Function
Public Function loadDgvBySql(ByVal sql As String) As DataTable
Try
Dim myTable = New DataTable()
Dim conn As New SqlConnection
conn.ConnectionString = "Data Source=192.168.0.91\SQLFMZOLL;Initial Catalog=VERAG;Integrated Security=false;User ID=test;Password=BmWr501956;"
conn.Open()
Using cmd As New SqlCommand(sql, conn)
Dim dr As SqlDataReader = cmd.ExecuteReader()
myTable.Load(dr)
dr.Close()
End Using
conn.Close()
Return myTable
Catch ex As Exception
MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
End Try
Return Nothing
End Function
End Module