'Attachment from Datagridview VB.NET

Can someone tell me is it correct now , how to read files from Datagridview in attachment. I need to fetch the items from the datagridview and add them in the email attachment. How i can fetch them? How can i manage it in function SendMail() to support it?

Public Sub SendMail()
    Dim oEmail As MailItem = CType(New Application().CreateItem(OlItemType.olMailItem), MailItem)
    oEmail.Recipients.Add("emailTo") 'Send TO
    oEmail.CC = "CopyEmail" 'Send CC
    oEmail.Recipients.ResolveAll()
    oEmail.Subject = "Spam - Meow!"
    oEmail.BodyFormat = OlBodyFormat.olFormatHTML
    oEmail.Body = "Blah, blah, blah..."
    oEmail.Importance = OlImportance.olImportanceNormal  'Request read email confirmation
    oEmail.ReadReceiptRequested = True
   
    **If DataGridView1.Rows.Count > 0 Then
        For Each row As DataGridViewRow In DataGridView1.Rows
            If row.Cells("Name").Tag IsNot Nothing Then
                Dim MsgAttach As New Attachment(CStr(row.Cells("Name").Tag))
                oEmail.Attachments.Add(MsgAttach)
            End If
        Next
    End If**

    oEmail.Recipients.ResolveAll()
    oEmail.Save()
    oEmail.Display(False) 'Show the email message and allow for editing before sending
    oEmail.Send() 'You can automatically send the email without displaying it.
End Sub

Button Browse:

OpenFileDialog1.FileName = "Folder1"
    OpenFileDialog1.DefaultExt = "*.*"
    OpenFileDialog1.FilterIndex = 6
    OpenFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
    OpenFileDialog1.Multiselect = True
    Dim saveDirectory As String = ".\Files\"
    If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
        If Not Directory.Exists(saveDirectory) Then
            Directory.CreateDirectory(saveDirectory)
        End If
        For Each item As String In OpenFileDialog1.FileNames
            Dim fileName As String = Path.GetFileName(OpenFileDialog1.FileName)
            Dim fileSavePath As String = Path.Combine(saveDirectory, fileName)
            File.Copy(OpenFileDialog1.FileName, fileSavePath, True)
        Next
    End If
    BindDataGrid()

Private Sub BindDataGrid()
    Dim filePaths As String() = Directory.GetFiles(".\Files\")
    Dim dt As DataTable = New DataTable()
    dt.Columns.Add("Text")
    dt.Columns.Add("Value")

    For Each filePath As String In filePaths
        dt.Rows.Add(IO.Path.GetFileName(filePath), filePath)
    Next

    dataGridView1.AllowUserToAddRows = False
    dataGridView1.Columns.Clear()
    Dim name As DataGridViewColumn = New DataGridViewTextBoxColumn With {
        .Name = "Name",
        .HeaderText = "File Name",
        .DataPropertyName = "Text",
        .Width = 100
    }
    DataGridView1.Columns.Insert(0, name)
    Dim path As DataGridViewColumn = New DataGridViewTextBoxColumn With {
        .Name = "Path",
        .HeaderText = "File Path",
        .DataPropertyName = "Value",
        .Width = 100
    }
    DataGridView1.Columns.Insert(1, path)
    DataGridView1.DataSource = dt
    Dim buttonColumn As DataGridViewButtonColumn = New DataGridViewButtonColumn With {
        .HeaderText = "",
        .Width = 60,
        .Name = "buttonColumn",
        .Text = "Delete",
        .UseColumnTextForButtonValue = True
    }
    DataGridView1.Columns.Insert(2, buttonColumn)
End Sub

Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
    If e.ColumnIndex = 2 Then
        Dim row As DataGridViewRow = DataGridView1.Rows(e.RowIndex)
        If MessageBox.Show(String.Format("Do you want to delete Name:{0}?", row.Cells("Name").Value), "Confirmation", MessageBoxButtons.YesNo) = DialogResult.Yes Then
            File.Delete(row.Cells("Path").Value.ToString())
            BindDataGrid()
        End If
    End If
End Sub

How can i get from datagridview the items to attach it to email?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source