Vb.net VB在表中发送电子邮件

Vb.net VB在表中发送电子邮件,vb.net,html-table,Vb.net,Html Table,我需要在从数据库检索后发送电子邮件表的帮助。已成功检索数据,但上的表显示一行,但数据库有多行 代码的问题在于Message.Body+=sb.ToString。以上所有代码在调试期间都能正常工作 我解决不了这个问题。请帮忙 Imports System.Data.SqlClient Imports System.Data Imports System.Net.Mail Imports System.Text Module Module1 Dim db As New Database

我需要在从数据库检索后发送电子邮件表的帮助。已成功检索数据,但上的表显示一行,但数据库有多行

代码的问题在于Message.Body+=sb.ToString。以上所有代码在调试期间都能正常工作

我解决不了这个问题。请帮忙

Imports System.Data.SqlClient
Imports System.Data
Imports System.Net.Mail
Imports System.Text

Module Module1
    Dim db As New Database

    Sub Main()

        Dim Message As MailMessage = New MailMessage()
        Dim Smtp As New SmtpClient()

        Dim emailTo As String = "email@email.com"
        Smtp.UseDefaultCredentials = True
        Smtp.Host = "server.com"
        Smtp.Port = 25

        Message.Subject = "Computers"
        Message.To.Add("email@email.com")
        Message.IsBodyHtml = True
        Message.Priority = MailPriority.High
        Message.From = New MailAddress("email@email.com")

        Dim sql As String
        Dim sql1 As String
        Dim dr As SqlDataReader
        Dim dr1 As SqlDataReader

        Dim count As Integer = 0

        Dim connstring As String = ("Server=QSD13\SQLEXPRESS; Initial Catalog = SoftwareManagementV2; UID=sa; Pwd=password;")
        Dim connection As New SqlConnection(connstring)

        db.OpenConn()

        'Select version and affected softwarename from both SCCM1 DB and affectedsoftware DB to check which are the affected computers
        sql = "SELECT SCCM1.DisplayName00, SCCM1.Version00, AffectedSoftware.Version00, AffectedSoftware.DisplayName00, SCCM1.Name00, SCCM1.InstallDate00, SCCM1.Publisher00, SCCM1.LastHWScan, SCCM1.DisplayName, SCCM1.email, SCCM1.Division, SCCM1.Dept, SCCM1.Brand, SCCM1.Model, SCCM1.OS from [SoftwareManagementV2].[dbo].AffectedSoftware, [CM_P01].[dbo].SCCM1 WHERE SCCM1.DisplayName00 = AffectedSoftware.DisplayName00 AND SCCM1.Version00 = AffectedSoftware.Version00"
        dr = db.ExecuteQuery(sql)

        'Select only values that appear once
        sql1 = "Select DISTINCT Name00, DisplayName00, Version00 FROM [SoftwareManagementV2].[dbo].[AffectedComputer] group by Name00, DisplayName00, Version00"
        dr1 = db.ExecuteQuery(sql1)

        'both condition must be satisfied to insert in affected computer db
        While dr.Read = True

            'Prevent duplicate values inserted into affected computer db
            If dr1.Read = False Then
                Console.WriteLine("Display Name:" + dr(0) + ", Version:" + dr(1) + ", Computer Name:" + dr(4))

                Dim cmd As SqlCommand = connection.CreateCommand
                connection.Open()

                'Insert affected computers and softwarenames into AffectedComputer DB 
                cmd.CommandText = "INSERT into AffectedComputer(Name00, DisplayName00, InstallDate00, Publisher00, Version00, LastHWScan, DisplayName, email, Division, Dept, Brand, Model, OS) VALUES (@Name00, @DisplayName00, @InstallDate00, @Publisher00, @Version00, @LastHWScan, @DisplayName, @email, @Division, @Dept, @Brand, @Model, @OS)"
                cmd.Parameters.AddWithValue("@Name00", dr(4))
                cmd.Parameters.AddWithValue("@DisplayName00", dr(0))
                cmd.Parameters.AddWithValue("@InstallDate00", dr(5))
                cmd.Parameters.AddWithValue("@Publisher00", dr(6))
                cmd.Parameters.AddWithValue("@Version00", dr(1))
                cmd.Parameters.AddWithValue("@LastHWScan", dr(7))
                cmd.Parameters.AddWithValue("@DisplayName", dr(8))
                cmd.Parameters.AddWithValue("@email", dr(9))
                cmd.Parameters.AddWithValue("@Division", dr(10))
                cmd.Parameters.AddWithValue("@Dept", dr(11))
                cmd.Parameters.AddWithValue("@Brand", dr(12))
                cmd.Parameters.AddWithValue("@Model", dr(13))
                cmd.Parameters.AddWithValue("@OS", dr(14))
                cmd.ExecuteNonQuery()
                connection.Close()


                Dim collection As New Collection
                Dim item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13 As String

                item1 = dr(4)
                item2 = dr(0)
                item3 = dr(5)
                item4 = dr(6)
                item5 = dr(1)
                item6 = dr(7)
                item7 = dr(8)
                item8 = dr(9)
                item9 = dr(10)
                item10 = dr(11)
                item11 = dr(12)
                item12 = dr(13)
                item13 = dr(14)
                Dim all = item1.ToString + item2.ToString + item3.ToString + item4.ToString + item5.ToString + item6.ToString + item7.ToString + item8.ToString + item9.ToString + item10.ToString + item11.ToString + item12.ToString + item13.ToString
                collection.Add(all)

                Dim sb As New StringBuilder

                sb.Append("<html><table  border=""1"" cellpadding=""0"" cellspacing=""0"" bordercolor=""000000"" align=""center"">")
                sb.Append("<tr>")
                sb.Append("<th bordercolor=""#000000"" bgcolor=""#FFFF00"" scope=""col"">Name00</th>")
                sb.Append("<th bordercolor=""#000000"" bgcolor=""#FFFF00"" scope=""col"">DisplayName00</th>")
                sb.Append("<th bordercolor=""#000000"" bgcolor=""#FFFF00"" scope=""col"">InstallDate00</th>")
                sb.Append("<th bordercolor=""#000000"" bgcolor=""#FFFF00"" scope=""col"">Publisher00</th>")
                sb.Append("<th bordercolor=""#000000"" bgcolor=""#FFFF00"" scope=""col"">Version00</th>")
                sb.Append("<th bordercolor=""#000000"" bgcolor=""#FFFF00"" scope=""col"">LastHWScan</th>")
                sb.Append("<th bordercolor=""#000000"" bgcolor=""#FFFF00"" scope=""col"">Display Name</th>")
                sb.Append("<th bordercolor=""#000000"" bgcolor=""#FFFF00"" scope=""col"">email</th>")
                sb.Append("<th bordercolor=""#000000"" bgcolor=""#FFFF00"" scope=""col"">Divison</th>")
                sb.Append("<th bordercolor=""#000000"" bgcolor=""#FFFF00"" scope=""col"">Dept</th>")
                sb.Append("<th bordercolor=""#000000"" bgcolor=""#FFFF00"" scope=""col"">Brand</th>")
                sb.Append("<th bordercolor=""#000000"" bgcolor=""#FFFF00"" scope=""col"">Model</th>")
                sb.Append("<th bordercolor=""#000000"" bgcolor=""#FFFF00"" scope=""col"">OS</th>")
                sb.Append("</tr>")

                For Each all In collection
                    sb.Append("<tr>")
                    sb.Append("<td bordercolor=""#000000"">" + item1 + "</td>")
                    sb.Append("<td bordercolor=""#000000"">" + item2 + "</td>")
                    sb.Append("<td bordercolor=""#000000"">" + item3 + "</td>")
                    sb.Append("<td bordercolor=""#000000"">" + item4 + "</td>")
                    sb.Append("<td bordercolor=""#000000"">" + item5 + "</td>")
                    sb.Append("<td bordercolor=""#000000"">" + item6 + "</td>")
                    sb.Append("<td bordercolor=""#000000"">" + item7 + "</td>")
                    sb.Append("<td bordercolor=""#000000"">" + item8 + "</td>")
                    sb.Append("<td bordercolor=""#000000"">" + item9 + "</td>")
                    sb.Append("<td bordercolor=""#000000"">" + item10 + "</td>")
                    sb.Append("<td bordercolor=""#000000"">" + item11 + "</td>")
                    sb.Append("<td bordercolor=""#000000"">" + item12 + "</td>")
                    sb.Append("<td bordercolor=""#000000"">" + item13 + "</td>")
                    sb.Append("</tr>")
                Next

                sb.Append("</table>")
                sb.Append("</br></html>")

                Message.Body += sb.ToString

                count = + 1

            End If

        End While

        dr.Close()
        dr1.Close()
        db.CloseConn()

        'Only send email when theres row(s)
        If count > 0 Then
            Smtp.Send(Message)
        End If

    End Sub

End Module
导入System.Data.SqlClient
导入系统数据
导入System.Net.Mail
导入系统文本
模块1
dimdb作为新数据库
副标题()
Dim Message As MailMessage=新建MailMessage()
Dim Smtp作为新的SmtpClient()
Dim emailTo作为字符串=”email@email.com"
Smtp.UseDefaultCredentials=True
Smtp.Host=“server.com”
Smtp.Port=25
Message.Subject=“计算机”
Message.To.Add(“email@email.com")
Message.IsBodyHtml=True
Message.Priority=MailPriority.High
Message.From=新邮件地址(“email@email.com")
将sql设置为字符串
将sql1设置为字符串
将dr设置为SqlDataReader
Dim dr1作为SqlDataReader
Dim计数为整数=0
Dim connstring作为字符串=(“服务器=QSD13\SQLEXPRESS;初始目录=SoftwareManagementV2;UID=sa;Pwd=password;”)
Dim连接作为新的SqlConnection(connstring)
db.OpenConn()
'从SCCM1数据库和affectedsoftware数据库中选择版本和受影响的软件名称,以检查哪些是受影响的计算机
sql=“选择SCCM1.DisplayName00,SCCM1.Version00,AffectedSoftware.Version00,AffectedSoftware.DisplayName00,SCCM1.Name00,SCCM1.InstallDate00,SCCM1.Publisher00,SCCM1.LastHWScan,SCCM1.DisplayName,SCCM1.email,SCCM1.Division,SCCM1.Dept,SCCM1.Brand,SCCM1.Model,SCCM1.OS从[SoftwareManagementV2].[dbo]。AffectedSoftware,[CM_P01].[dbo].SCCM1,其中SCCM1.DisplayName00=AffectedSoftware.DisplayName00和SCCM1.Version00=AffectedSoftware.Version00“
dr=db.ExecuteQuery(sql)
'仅选择出现一次的值
sql1=“从[SoftwareManagementV2].[dbo].[AffectedComputer]组中按名称00、显示名称00、版本00选择不同的名称00、显示名称00、版本00”
dr1=db.ExecuteQuery(sql1)
'必须满足这两个条件才能插入受影响的计算机数据库
而Read博士则为真
'防止重复值插入受影响的计算机数据库
如果dr1.Read=False,则
Console.WriteLine(“显示名称:“+dr(0)+”,版本:“+dr(1)+”,计算机名称:“+dr(4))
Dim cmd作为SqlCommand=connection.CreateCommand
connection.Open()
'将受影响的计算机和软件名插入受影响的计算机数据库
cmd.CommandText=“插入受影响的计算机(名称00、显示名称00、安装日期00、发布者00、版本00、LastHWScan、显示名称、电子邮件、部门、部门、品牌、型号、操作系统)值(@Name00、@DisplayName00、@InstallDate00、@Publisher00、@Version00、@LastHWScan、@DisplayName、@email、@Division、@Dept、@Brand、@Model、@OS)”
cmd.Parameters.AddWithValue(“@Name00”,dr(4))
cmd.Parameters.AddWithValue(“@DisplayName00”,dr(0))
cmd.Parameters.AddWithValue(“@InstallDate00”,dr(5))
cmd.Parameters.AddWithValue(“@Publisher00”,dr(6))
cmd.Parameters.AddWithValue(“@Version00”,dr(1))
cmd.Parameters.AddWithValue(“@LastHWScan”,dr(7))
cmd.Parameters.AddWithValue(“@DisplayName”,dr(8))
cmd.Parameters.AddWithValue(“@email”,dr(9))
cmd.Parameters.AddWithValue(“@Division”,dr(10))
cmd.Parameters.AddWithValue(“@Dept”,dr(11))
cmd.Parameters.AddWithValue(“@Brand”,dr(12))
cmd.Parameters.AddWithValue(“@Model”,dr(13))
cmd.Parameters.AddWithValue(“@OS”,dr(14))
cmd.ExecuteNonQuery()
连接。关闭()
将集合设置为新集合
将项目1、项目2、项目3、项目4、项目5、项目6、项目7、项目8、项目9、项目10、项目11、项目12、项目13设置为字符串
项目1=dr(4)
项目2=dr(0)
项目3=dr(5)
第4项=dr(6)
项目5=dr(1)
第6项=dr(7)
第7项=dr(8)
第8项=dr(9)
第9项=dr(10)
项目10=dr(11)
项目11=dr(12)
第12项=dr(13)
第13项=dr(14)
调整所有=项目1.ToString+item2.ToString+item3.ToString+item4.ToString+item5.ToString+item6.ToString+item7.ToString+item8.ToString+item9.ToString+item10.ToString+item11.ToString+item12.ToString+item13.ToString
集合。添加(全部)
使某人成为新的架线工
某人加上(“”)
某人加上(“”)
某人附加(“姓名00”)
某人附加(“DisplayName00”)
某人追加(“InstallDate00”)
某人追加(“发布者00”)
sb.追加(“版本00”)
某人追加(“最后一次扫描”)
某人附加(“显示名称”)
某人附加(“电子邮件”)
某人附加(“除数”)
某人附加(“部门”)
某人附加(“品牌”)
某人附加(“模型”)
某人附加(“OS”)
某人加上(“”)
对于每个集合中的所有
某人加上(“”)
某人追加(“+item1+”)
某人追加(“+item2+”)
某人追加(“+item3+”)
某人追加(“+item4+”)
某人追加(“+item5+”)
某人追加(“+item6+”)
某人追加(“+item7+”)
某人追加(“+item8+”)
某人追加(“+item9+”)
某人附加(““+item1
For Each all In collection
                sb.Append("<tr>")
                sb.Append("<td bordercolor=""#000000"">" + all + "</td>")                    
                sb.Append("</tr>")
            Next