所以後續問題,我想出瞭如何通過電子郵件從表單發送電子郵件和發送文本,但我有一些麻煩引用列表視圖數據電子郵件部分的正文。引用列表視圖與電子郵件部分使用vb.net
結果出現爲:電子郵件中的「Lis Lis」。
即使我在列表視圖中有3列和兩行數據。我不知道如何引用列表視圖,任何人有任何想法?代碼如下所示。
Private Sub LoadPDF_Data()
sqlCon = New SqlConnection(stlCon)
Using (sqlCon)
Dim sqlComm As New SqlCommand
sqlComm.Connection = sqlCon
sqlComm.CommandText = "sp_GetDocs"
sqlComm.CommandType = CommandType.StoredProcedure
sqlComm.Parameters.AddWithValue("@DOCID", Integer.Parse(TextBox1.Text.Trim()))
sqlCon.Open()
Dim sqlReader As SqlDataReader = sqlComm.ExecuteReader()
Using sqlReader
Dim table As New DataTable
table.Load(sqlReader)
ListView1.View = View.Details
ListView1.GridLines = True
ListView1.Columns.Add("PDF Name", 200, HorizontalAlignment.Left)
ListView1.Columns.Add("PDF Description", 200, HorizontalAlignment.Left)
ListView1.Columns.Add("PDF Location", 200, HorizontalAlignment.Left)
For Each row In table.Rows
Dim PDF As New ListViewItem
PDF.Text = row.Item(0)
PDF.SubItems.Add(row.item(1))
PDF.SubItems.Add(row.item(2))
For i = 1 To table.Columns.Count - 1
PDF.SubItems.Add(row(i).ToString(0))
PDF.SubItems.Add(row(i).ToString(1))
PDF.SubItems.Add(row(i).ToString(2))
Next
ListView1.Items.Add(PDF)
Next
ListView1.EndUpdate()
End Using
End Using
End Sub
Private Function BuildTheListViewItemsToSend(ByVal path As ListView)
Dim sb As New System.Text.StringBuilder
For Each item As ListViewItem In ListView1.Items
For i = 1 To ListView1.Items.Count - 1
sb.Append((ListView1.Items(i).ToString(0)) & (ListView1.Items(i).ToString(1)) & (ListView1.Items(i).ToString(2)) & vbCrLf)
Next
Next
Return sb.ToString()
End Function
Private Sub EmailInfo()
Dim MailFrom As System.Net.Mail.MailAddress
Dim MailTo As System.Net.Mail.MailAddress
Dim MailSubject As String
Dim MailBody As String
Dim Mail As New MailMessage
Dim MailClient As SmtpClient
Dim List As String = BuildTheListViewItemsToSend(ListView1)
Try
MailBody = (BuildTheListViewItemsToSend(ListView1))
MailSubject = ("Documents for the DOCID: " + TextBox1.Text)
MailFrom = New MailAddress(TextBox2.Text)
MailTo = New MailAddress(TextBox3.Text)
Mail.From = MailFrom
Mail.To.Add(MailTo)
Mail.Subject = MailSubject
Mail.Body = MailBody
MailClient = New SmtpClient("smtp.office365.com")
MailClient.Port = 587
MailClient.EnableSsl = True
MailClient.Credentials = New System.Net.NetworkCredential(TextBox2.Text, "password", "domain")
MailClient.Send(Mail)
MsgBox("Email Sent")
Catch ex As Exception
MsgBox("Error")
End Try
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
LoadPDF_Data()
End Sub
Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged
End Sub
Private Sub Email_Click(sender As Object, e As EventArgs) Handles Email.Click
EmailInfo()
End Sub
非常感謝你的工作!最後一個問題,如果我想將它的格式設置爲表格格式,我會在電子郵件部分或BuildTheListViewItemsToSend部分將其格式化爲電子郵件的結果。我可以使用在開始時使用的相同格式嗎?我很抱歉問了很多問題,我仍然對vb.net –
不熟悉。因爲這些列是長度可能有很大變化的文本,所以如果沒有可用的表格,將很難進行格式化。最簡單的解決方案是將它格式化爲塊(我無法在評論中正確格式化) –
哈哈我看到謝謝你的所有幫助,這有助於獲取電子郵件中數據的最大障礙,謝謝! –