Create .csv file and send mail on a particular day of week

sameer_havakajoka's Avatar author of Create .csv file and send mail on a particular day of week
This is an article on Create .csv file and send mail on a particular day of week in ASP.

Introduction



This is a windows service where It will create a .csv file and sends mail on a particular day of week

Background



This solution is used for creating .csv file from datatable and send it on a particular day of week. As it is a windows service no manual intervention is needed.

The code



Code:
Imports System.Data
Imports System.IO
Imports System.Net
Imports System.Net.Mail
Imports System.Configuration
Imports System.Collections.Generic
Imports Microsoft.Office.Interop
**********************************************************************
Method to create Csv file and sent it on a particular day of week.
************************************************************************
Public Class ProcessBatchFile
	Public Sub PassToCSV()
		Try
			Dim ToAddr As String = "Email To Address"
			Dim sMessage As String = "Please find attached batch file"
			Dim sSubject As String = "Batch File"
			Dim sFilePath As String "D:\Batch.csv")
			Dim objDataFactory As New clsDataFactory 
			create object for dataclass
			Dim oDT As DataSet = New DataSet
			If Now.DayOfWeek <> DayOfWeek.Tuesday Then
				ControlVariable("MailSent") = "" 'Add one flag in database 
			End If
			If Now.DayOfWeek = DayOfWeek.Tuesday Then
				If Not ControlVariable("MailSent") = "Sent" Then
					'check if mail has already been sent 
					oDT = objDataFactory.GetDetails()
					'Get Data from datatable 
					If File.Exists(sFilePath) Then
						File.Delete(sFilePath)
					End If
					CreateCSVFile(oDT, sFilePath)
					SendMail(ToAddr, sMessage, sSubject, sFilePath)
					ControlVariable("MailSent", "Sent") = "Sent"
					'Add one flag in database when mail is sent 
				End If
			End If
			Catch ex As Exception
				LogErrormesaage
		End Try
	End Sub
	 
	#Region "Export Grid to CSV"
	' Create the CSV file to which grid data will be exported. 
	Public Sub CreateCSVFile(ByVal ds As DataSet, ByVal strFilePath As String)
		Try
			Dim sw As StreamWriter = Nothing
			sw = New StreamWriter(strFilePath, False)
			'sw.AutoFlush = True
			Using sw
			Dim dt1 As DataTable = ds.Tables(0)
			Dim dt2 As DataTable = ds.Tables(1)
			' First we will write the headers. 
			'DataTable dt = m_dsProducts.Tables[0]; 
			Dim iColCount As Integer = dt1.Columns.Count
			For i As Integer = 0 To iColCount - 1
				sw.Write(dt1.Columns(i))
				If i < iColCount - 1 Then
					sw.Write(",")
				End If
			Next
			sw.Write(sw.NewLine)
			' Now write all the rows. 
			For Each dr As DataRow In dt1.Rows
				For i As Integer = 0 To iColCount - 1
					If Not Convert.IsDBNull(dr(i)) Then
						sw.Write(dr(i).ToString())
					End If
					If i < iColCount - 1 Then
						sw.Write(",")
					End If
				Next
				sw.Write(sw.NewLine)
			Next
			sw.Write(sw.NewLine)
			' Now write all the rows. 
			For Each dr As DataRow In dt1.Rows
				For i As Integer = 0 To iColCount - 1
					If Not Convert.IsDBNull(dr(i)) Then
						sw.Write(dr(i).ToString())
					End If
					If i < iColCount - 1 Then
						sw.Write(",")
					End If
				Next
				sw.Write(sw.NewLine)
			Next
			sw.AutoFlush() = True
			sw.Flush()
			sw.Close()
			sw.Dispose()
			End Using
			sw.Close()
			Catch ex As Exception
			Throw
		End Try
	End Sub
	#End Region
	'This Method is used to send created .csv file to respective person 

	Public Function SendMail(ByVal sToAddr As String, ByVal sMessage As String, ByVal sSubject As String, ByVal sAttachment As String, Optional ByVal sCCAddr As String = Nothing) As Boolean
		Try
			 
			Dim sAccount As String = "Email Account"' Specify Email account()
			Dim sPassword As String = "Email Password"' Specify Email Pwd()
			Dim sServer As String = "Email Server" Specify Email Server
			Dim sMail_FrmAddress As String = "Email From Address" Specify Email from address
			Dim mail As MailMessage = New MailMessage()
			mail.From = New MailAddress(sMail_FrmAddress)
			Dim sToAdrCol As String() = sToAddr.Split(","c)
			If sCCAddr <> "" Then
				Dim sCCAdrCol As String() = sCCAddr.Split(","c)
				'<-------------------Adding CC Addresses--------------->
				For Each s As String In sCCAdrCol
					If s.Trim <> "" Then
						mail.CC.Add(s.Trim)
					End If
				Next
			End If
			'<-------------------Adding To Addresses--------------->
			For Each s As String In sToAdrCol
				If s.Trim <> "" Then
					mail.To.Add(s.Trim)
				End If
			Next
			mail.Subject = sSubject
			mail.Body = sMessage
			mail.Attachments.Add(New Attachment(sAttachment))
			'<-------------------Sending The mail--------------->
			Dim smtp As SmtpClient = New SmtpClient(sServer)
			smtp.Credentials = New NetworkCredential(sAccount, sPassword)
			smtp.Send(mail)
			Return True
			Catch ex As Exception
			Throw ex
			Return False
		End Try
	End Function
End Class
0
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
Nominate this Article for Article of the month - Jan 2010
0
auctions97's Avatar, Join Date: Feb 2010
Newbie Member
thanks for the tip
0
Mohamed IBrahim's Avatar, Join Date: Oct 2010
Newbie Member
thanks for tips