如何在电子邮件正文中添加数据库内容 [英] How to add database content in email body
问题描述
大家好......
我正在vb.net做发票项目,我在发票上有问题,因为详细的发送时间。
我想在电子邮件正文中显示详细信息,我不知道如何执行此操作,以下详细信息是我的数据库和示例电子邮件正文结构。
这是我的数据库
________________________________
客户名称余额
________________________________
xxxxxx 1000
zzzzzz 2500
tttttt 5244
________________________________
此详细信息同样显示在电子邮件正文中,如下所示
客户名称余额金额
xxxxxx 1000
zzzzzz 2500
tttttt 5244
i试多种方式但不使用我的vb.net代码是下面
Dim a As 字符串
a = xxxxxx@gmail.com
Dim mail As 新 MailMessage()
Dim SmtpServer 作为 新 SmtpClient( smtp。 gmail.com)
mail.From = 新 MailAddress( < span class =code-string> xxxxxx@gmail.com)
mail。[ To ]。添加(a)
mail.Subject = 测试
' 正文内容
''' ''
cmd = 新 OleDbCommand( 选择ClientName,BalanceAmount从收据,conn)
adp1 = 新 OleDbDataAdapter(cmd)
ds2 = < span class =code-keyword> New DataSet
adp1.Fill(ds2, 收据)
mail.Body =(ds2.Tables( 0 )。行( 0 )。项目( 0 ))
''' '
mail.IsBodyHtml = True
SmtpServer.Port = 587
SmtpServer.Credentials = 新 System.Net.NetworkC redential( xxxxxxx@gmail.com, •••••••••••••••)
SmtpServer.EnableSsl = True
SmtpServer.Send(mail)
MsgBox( send )
i收到没有数据库详情的邮件。
所以请发送你的想法如何解决这个
这是我用来发送电子邮件的课程:
Imports System.Data
Imports System.Configuration
< span class =code-keyword> Imports System.Web
Imports System.Net.Mail
< span class =code-keyword>公共 Cl ass EmailRelay
公共 smtpServer 作为 字符串
公共 userName 作为 字符串
公共密码作为 字符串
公共 Sub new ( ByVal _smtpServer As 字符串, ByVal _userName 作为 字符串, ByVal _password 作为 字符串 )
smtpServer = _smtpServer
userName = _userName
密码= _password
结束 Sub
公共 共享 功能 ServerCertificateValidationCallback(< span class =code-keyword> ByVal sender 作为 对象,_
ByVal cert 作为 System.Security.Cryptography.X509Certificates.X509Certificate,_
ByVal chain 作为 System.Security.Cryptography.X509Certificates.X509Chain,_
ByVal sslPoli cyErrors As Net.Security.SslPolicyErrors) As Boolean
返回 sslPolicyErrors = Net.Security.SslPolicyErrors.None
结束 < span class =code-keyword>功能
公共 功能 SendMail( ByVal fromAddress As String , ByVal toAddress as String ,
ByVal subject 作为 字符串,< span class =code-keyword> ByVal body As String ,
可选 ByVal fromEmailName 正如 字符串 = ,
可选 Byval useSSL As 布尔 = True ,
可选 ByRef errMsg 作为 字符串 = ) as 布尔
Dim mm 作为New MailMessage()
Dim smtp As 新 SmtpClient()
Dim emailFrom as 新 MailAddress(fromAddress,fromEmailName)
Dim NetworkCred As 新 System.Net.NetworkCredential()
尝试
NetworkCred.UserName = userName
NetworkCred.Password =密码
使用 mm
。[ To ]。添加(新 MailAddress(toAddress))
.From = emailFrom
.Subject = subject
.Body = body
.IsBodyHtml = True
结束 使用
使用 smtp
.Host = smtpServer
.EnableSsl = useSSL
.UseDefaultCredentials = True
.Credentials = NetworkCred
.Port = 587
。发送(mm)
结束 使用
Catch ex As 例外
errMsg = ex.Message
< span class =code-keyword>返回 Fals e
结束 尝试
返回 True
结束 功能
结束 Class
注意.IsBodyHtml
行?只需使用此课程并以HTML格式化您的结果。
使用如下课程:
< pre lang =vb> Dim errMsg as String
Dim 电子邮件 as new EmailRelay( smtp.gmail.com, you@gmail.com, YourEmailPassword)
如果 不 email.SendMail ( you@gmail.com, targetEmailAddress@wherever.com,_
主题行,_
< HTML>这是你的html所在格式化的正文内容将< / HTML>,_
您的姓名在这里, True ,errMsg)然后
MsgBox( 发送电子邮件时出现问题。返回的错误是:& errMsg)
结束 如果
您可能需要将useSSL参数设置为false,具体取决于您的smtp服务器的配置方式。
- Pete
您好,
请更改您的密码:
...
adp1.Fill(ds2, 收据)
Dim sb As < span class =code-keyword>新 System.Text.StringBuilder
' 添加标题
对于 每个 col As DataColumn 在 ds2.Tables( 0 )。列
sb.Append(col.ColumnName.ToString.PadRight( 30 ))
下一页
sb.AppendLine()
' 表格内容
对于 每个行作为 DataRow 在 ds2.Tables( 0 )。行
sb.Append(row.Item( 0 )。ToString.PadRight( 30 ))
sb.AppendLine(row.Item( 1 )。ToString.PadLeft( 30 ))
下一页
mail.Body = sb.Tostring
...
感谢您的回答!
i solve这个问题,我的代码如下。
Private Sub sendmail()
尝试
Dim eaddress,ccmail,passw As String
Dim frommailidds As DataSet
cmd = New OleDbCommand(select EmailAddress,CCMailAddress,Psw from company where id = 1,conn)
adp =新OleDbDataAdapter(cmd)
frommailidds =新数据集
adp.Fill(frommailidds,company)
eaddress =(frommailidds.Tables(0).Rows (0).Item(0))
ccmail =(frommailidds.Tables(0).Rows(0).Item(1))
passw =(frommailidds.Tables(0).Rows(0 ).Item(2))
Dim mail As New MailMessage()
Dim SmtpServer As New SmtpClient(smtp.gmail.com)
mail。 From = New MailAddress(eaddress)
mail。[To] .Add(ccmail)
mail.Subject =Total Invoice Due Details
Dim qry As字符串
Dim dsbody作为新数据集
Dim adpbody作为OleDbDataAdapter
qry =选择Clientid,ClientName,(SUM(TotalAmount)-Sum(Amountpaid))作为BalanceAmount从收据GROUP BY Clientid,Clientname
cmd =新OleDbCommand(qry,conn)
dsbody.Clear()
adpbody = New O leDbDataAdapter(cmd)
adpbody.Fill(dsbody,receipt)
Dim dts As New DataTable
Dim dv As New DataView(dsbody.Tables(0))
dv。 RowFilter =Balanceamount<> 0
dts = dv.ToTable()
Dim str(dts.Rows.Count - 1)As String
Dim xc As Integer
Dim sum As Decimal
sum = 0
xc = 0
For each dr As DataRow in dts.Rows
str(xc )=< tr>< td bgcolore =#B2B2CC>+ dr(1).ToString()+< / td>< td bgcolore ='#B2B2CC'align ='center'>+ dr(2).ToString()+< / td>< / tr>
sum = sum + Decimal.Parse(dr(2).ToString)
xc = xc + 1
下一页
mail.Body =< html>< head>< title>付款明细< / title>< / head>< table border = 1>< tr bgcolor =#6699FF>< th bgcolor =#6699FF>客户名称< / th>< th>余额金额< / th>< / tr>+ String.Concat(str)+< tr bgcolore = '#FF0000'>< font color ='red'>< b>总余额金额< / b>< / font> < td bgcolore =#FF0000 align ='center'>< font color ='red'>< b>+ sum.ToString +< / b>< / font>< / td> < / TR>< / HTML>
mail.IsBodyHtml = True
SmtpServer.Port = 587
SmtpServer.Credentials = New System.Net.NetworkCredential(eaddress,passw)
SmtpServer.EnableSsl =真
SmtpServer.SendMailAsync(mail)
MessageBox.Show(总发票到期详情邮件发送)
Catch ex As Exception
MsgBox(ex.ToString)
最后
conn.Close()
结束尝试
结束子
Hi all...
I am doing invoice project in vb.net, i have a problem in invoice due details sending time.
I want display the details in email body, i don't know how to do this, the following details is my database and the sample email body structure .
This is my database
________________________________ Client name Balance amount ________________________________ xxxxxx 1000 zzzzzz 2500 tttttt 5244 ________________________________
This details ditto display in email body like below
Client name Balance amount xxxxxx 1000 zzzzzz 2500 tttttt 5244
i try to many way but no use my vb.net code is below
Dim a As String
a = "xxxxxx@gmail.com"
Dim mail As New MailMessage()
Dim SmtpServer As New SmtpClient("smtp.gmail.com")
mail.From = New MailAddress("xxxxxx@gmail.com")
mail.[To].Add(a)
mail.Subject = "Test"
'Body Content
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
cmd = New OleDbCommand("select ClientName,BalanceAmount from receipt ", conn)
adp1 = New OleDbDataAdapter(cmd)
ds2 = New DataSet
adp1.Fill(ds2, "receipt")
mail.Body = (ds2.Tables(0).Rows(0).Item(0))
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
mail.IsBodyHtml = True
SmtpServer.Port = 587
SmtpServer.Credentials = New System.Net.NetworkCredential("xxxxxxx@gmail.com", "••••••••••••••••")
SmtpServer.EnableSsl = True
SmtpServer.Send(mail)
MsgBox("send ")
i got the mail without the database details.
so please send your ideas how to solve this
This is the class i use to send email:
Imports System.Data Imports System.Configuration Imports System.Web Imports System.Net.Mail Public Class EmailRelay Public smtpServer As String Public userName As String Public password As String Public Sub new(ByVal _smtpServer As String, ByVal _userName As String, ByVal _password As String) smtpServer = _smtpServer userName = _userName password = _password End Sub Public Shared Function ServerCertificateValidationCallback(ByVal sender As Object, _ ByVal cert As System.Security.Cryptography.X509Certificates.X509Certificate, _ ByVal chain As System.Security.Cryptography.X509Certificates.X509Chain, _ ByVal sslPolicyErrors As Net.Security.SslPolicyErrors) As Boolean Return sslPolicyErrors = Net.Security.SslPolicyErrors.None End Function Public Function SendMail(ByVal fromAddress As String, ByVal toAddress as String, ByVal subject As String, ByVal body As String, Optional ByVal fromEmailName As String = "", Optional Byval useSSL As Boolean = True, Optional ByRef errMsg As String = "") As Boolean Dim mm As New MailMessage() Dim smtp As New SmtpClient() Dim emailFrom as New MailAddress(fromAddress, fromEmailName) Dim NetworkCred As New System.Net.NetworkCredential() Try NetworkCred.UserName = userName NetworkCred.Password = password With mm .[To].Add(New MailAddress(toAddress)) .From = emailFrom .Subject = subject .Body = body .IsBodyHtml = True End With With smtp .Host = smtpServer .EnableSsl = useSSL .UseDefaultCredentials = True .Credentials = NetworkCred .Port = 587 .Send(mm) End With Catch ex As Exception errMsg = ex.Message Return False End Try Return True End Function End Class
Notice the.IsBodyHtml
line? Simply use this class and format your results in HTML.
Use the class like this:
Dim errMsg as String Dim email as new EmailRelay("smtp.gmail.com", "you@gmail.com", "YourEmailPassword") If NOT email.SendMail("you@gmail.com", "targetEmailAddress@wherever.com", _ "Subject Line", _ "<HTML>This is where your html formatted body content will go</HTML>", _ "Your name here", True, errMsg) Then MsgBox("There was a problem sending your email. The error returned is: " & errMsg) End If
You may need to set the "useSSL" parameter to false, depending on how your smtp server is configured.
- Pete
Hi,
please change your code:
... adp1.Fill(ds2, "receipt") Dim sb As New System.Text.StringBuilder ' add header For Each col As DataColumn In ds2.Tables(0).Columns sb.Append(col.ColumnName.ToString.PadRight(30)) Next sb.AppendLine() ' table content For Each row As DataRow In ds2.Tables(0).Rows sb.Append(row.Item(0).ToString.PadRight(30)) sb.AppendLine(row.Item(1).ToString.PadLeft(30)) Next mail.Body= sb.Tostring ...
Thank you for your answers!
i solve this problem,my code is below.
Private Sub sendmail() Try Dim eaddress, ccmail, passw As String Dim frommailidds As DataSet cmd = New OleDbCommand("select EmailAddress,CCMailAddress,Psw from company Where id=1", conn) adp = New OleDbDataAdapter(cmd) frommailidds = New DataSet adp.Fill(frommailidds, "company") eaddress = (frommailidds.Tables(0).Rows(0).Item(0)) ccmail = (frommailidds.Tables(0).Rows(0).Item(1)) passw = (frommailidds.Tables(0).Rows(0).Item(2)) Dim mail As New MailMessage() Dim SmtpServer As New SmtpClient("smtp.gmail.com") mail.From = New MailAddress(eaddress) mail.[To].Add(ccmail) mail.Subject = "Total Invoice Due Details" Dim qry As String Dim dsbody As New DataSet Dim adpbody As OleDbDataAdapter qry = "select Clientid,ClientName,(SUM(TotalAmount)-Sum(Amountpaid)) as BalanceAmount from receipt GROUP BY Clientid,Clientname " cmd = New OleDbCommand(qry, conn) dsbody.Clear() adpbody = New OleDbDataAdapter(cmd) adpbody.Fill(dsbody, "receipt") Dim dts As New DataTable Dim dv As New DataView(dsbody.Tables(0)) dv.RowFilter = "Balanceamount <>0" dts = dv.ToTable() Dim str(dts.Rows.Count - 1) As String Dim xc As Integer Dim sum As Decimal sum = 0 xc = 0 For Each dr As DataRow In dts.Rows str(xc) = "<tr><td bgcolore=#B2B2CC>" + dr(1).ToString() + "</td><td bgcolore='#B2B2CC' align='center'>" + dr(2).ToString() + "</td></tr>" sum = sum + Decimal.Parse(dr(2).ToString) xc = xc + 1 Next mail.Body = " <html><head><title>Payment details</title></head><table border=1><tr bgcolor=#6699FF ><th bgcolor=#6699FF>Client Name</th><th>Balance Amount</th></tr>" + String.Concat(str) + "<tr bgcolore='#FF0000'><font color='red'><b> Total Balance Amount </b></font> <td bgcolore=#FF0000 align='center'><font color='red'><b>" + sum.ToString + "</b></font></td></tr></html> " mail.IsBodyHtml = True SmtpServer.Port = 587 SmtpServer.Credentials = New System.Net.NetworkCredential(eaddress, passw) SmtpServer.EnableSsl = True SmtpServer.SendMailAsync(mail) MessageBox.Show("Total Invoice Due Details Mail Sent") Catch ex As Exception MsgBox(ex.ToString) Finally conn.Close() End Try End Sub
这篇关于如何在电子邮件正文中添加数据库内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!