0

我正在尝试制作一个程序,将查询结果(在数据集中)通过电子邮件发送给用户......我的代码是:

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

除了发送电子邮件正文外,一切正常......我怎样才能将结果作为正文发送到电子邮件?

4

2 回答 2

2

您可以使用 Linq 和 VB 的新内联 xml 文字功能来生成 html。尝试这个:

Dim payOuts = _
<html>
    <body>
        <table>
            <tr><th>My First Column Header</th><th>My Second Column Header</th></tr>
            <%= From paidOut In Me.DataDeliveryServiceDataSet.Paid_Out_Tb.AsEnumerable _
                Select <tr>
                            <td><%= paidOut.MyFirstColum %></td>
                            <td><%= paidOut.MySecondColum %></td>
                       </tr> %>
        </table>
    </body>
</html>

mail.IsBodyHtml = True 
mail.Body = payouts.ToString

如果 System.Data.DataSetExtensions.dll 不存在,请务必在项目中包含对它的引用。你还需要Imports System.Linq在你的课上。请参阅 Éric Moreau 发布的 Using LINQ and XML Literals to transform a DataTable into a HTML table博客以获得很好的解释。

于 2012-07-16T17:45:36.377 回答
1

您将需要循环浏览数据集的行并提取您希望通过电子邮件发送的数据。您可以通过添加以下语句使用 HTML 对其进行格式化:

mail.IsBodyHtml = True
于 2012-07-16T17:08:39.080 回答