如何在电子邮件正文中添加数据库内容 [英] How to add database content in email body

查看:96
本文介绍了如何在电子邮件正文中添加数据库内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好......

我正在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆