Vb.net VB在表中发送电子邮件
我需要在从数据库检索后发送电子邮件表的帮助。已成功检索数据,但上的表显示一行,但数据库有多行 代码的问题在于Message.Body+=sb.ToString。以上所有代码在调试期间都能正常工作 我解决不了这个问题。请帮忙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
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