【发布时间】:2015-01-07 22:38:13
【问题描述】:
我正在尝试制作一个程序,将查询结果(在数据集中)通过电子邮件发送给用户...我的代码是:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Paid_Out_TbTableAdapter.Fill(Me.dataset.Paid_Out_Tb)
Me.ReportViewer1.RefreshReport()
Try
Dim SmtpServer As New SmtpClient()
Dim mail As New MailMessage()
SmtpServer.Credentials = New _
Net.NetworkCredential("Bob", "password")
SmtpServer.Port = 25
SmtpServer.Host = "server"
mail = New MailMessage()
mail.From = New MailAddress("email@email.com")
mail.To.Add("Email@email.com")
mail.Subject = "Test Mail"
mail.Body = (Me.DataSet.Paid_Out_Tb.ToString)
SmtpServer.Send(mail)
MsgBox("mail send")
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
除了发送电子邮件正文外,一切正常...我怎样才能将结果作为正文发送到电子邮件?
【问题讨论】:
-
您需要它易于人类阅读吗?您可以从 DataSet 中获取 XML 输出,但人们会在尝试阅读它时睁一只眼闭一只眼。
-
它不会抛出错误,它只是将其作为正文发送:“Paid_Out_Tb” 电子邮件中没有显示其他内容...
-
@JamieSee,是的,它需要在正文中显示结果,以便用户快速理解。
-
如果我将其更改为:
mail.Body = (Me.Paid_Out_TbTableAdapter.Fill(Me.JLI_DataDeliveryServiceDataSet.Paid_Out_Tb))电子邮件的正文是“4”,即结果数......所以我只需要找出如何显示结果而不是数字结果... -
@Shmewnix:您的问题的原因是
DataTable的ToString方法的所有内容都没有人类可读的输出,就像您在页面上看到的那样。同样,.Fill方法返回数据表中的行数,如您所说。您需要的所有数据都在数据表中,您只需要自己提取它(或找到其他方法),正如 ron tornambe 在他的回答中所建议的那样。 HTML 表格可能是您最好的选择。