You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser.
Strange StringBuilder behaviour when composing Email
-
Thread starter
Guest
-
Start date
Hi
I am using StringBuilder to compose an email. The body of email consists of
a table for which data has to be taken fron SQL Server.
I use append method to add text to the StringBuilder variable. When I am
finished I call ToString function to get the string.
The problem is that many times, it changes the text I appended to it. Like
when I appended
ABC<BR>6<BR>5<BR>05</FONT></TH>
it changed to
<TH vAlign=top noWrap width=30><FONT face=Arial size=2 r="#ffffff"
colo>ABC<BR>6<BR>5<BR>05</FONT></TH>
I tried using the String instead of StringBuilder but the problem is still
there.
Please help me.
Could you please post the code for this? It could be a logic error? I'm
interested in seeing the code first, though...
here is simplified version of my code
Public Sub GetEmailBody(ByRef strHTMLMessage As StringBuilder)
Dim strQuery As String
Dim Adodc1 As ADODB.Recordset
strHTMLMessage.Remove(0, strHTMLMessage.Length)
' create HTML message
strHTMLMessage.Append("<html><head><title>My page</title> " _
& "<style type=""text/css"">th {color:
#ffffff;font: bold 12px arial} td.b {color: #ffffff;font: bold 12px arial}
</style></head><body>" _
& "<table align=center border=1 cellspacing=0
cellpadding=1 style='border-collapse: collapse' bordercolor=#777777>" _
& "<tr bgcolor=#ff0000>" _
& "<th nowrap valign=top align=left
width=200>col1</th>" _
& "<th valign=top>col2</th>" _
& "<th nowrap valign=top>col3<br>one<br>two</th>" _
Adodc1 = New ADODB.Recordset
Dim strQuery As String = "SELECT * FROM sample"
' conn is global Adodb.Connection
Adodc1.Open(strQuery, conn)
If Not Adodc1.EOF Then
Do Until Adodc1.EOF
strHTMLMessage.Append(vbCrLf & "<tr bgcolor=#ffcccc>")
strHTMLMessage.Append("<td nowrap align=left>" &
tmpPlay.StationName & "</td><td nowrap align=left>" &
tmpPlay.PresentationRegion & "</td>")
loop
strHTMLMessage.Append("</tr>")
Next
' end of table
strHTMLMessage.Append("</table>")
strHTMLMessage.Append("</body></html>")
End Sub
Public Sub SendEmail()
Dim strBody As New StringBuilder
Dim mailmsg As CDO.Message
Dim Conf As CDO.Configuration
mailmsg = New CDO.Message
mailmsg.Configuration.Load(CDO.CdoConfigSource.cdoIIS)
eMailFrom = "(e-mail address removed)"
GetEmailBody(strBody)
eMailSubject = "testing"
With mailmsg
.From = eMailFrom
.Subject = eMailSubject
.To = recp(i).email
.HTMLBody = strBody.ToString
.Send()
End With
End Sub
Public Sub GetEmailBody(ByRef strHTMLMessage As StringBuilder)
Dim strQuery As String
Dim Adodc1 As ADODB.Recordset
strHTMLMessage.Remove(0, strHTMLMessage.Length)
' create HTML message
strHTMLMessage.Append("<html><head><title>My page</title> " _
& "<style type=""text/css"">th {color:
#ffffff;font: bold 12px arial} td.b {color: #ffffff;font: bold 12px arial}
</style></head><body>" _
& "<table align=center border=1 cellspacing=0
cellpadding=1 style='border-collapse: collapse' bordercolor=#777777>" _
& "<tr bgcolor=#ff0000>" _
& "<th nowrap valign=top align=left
width=200>col1</th>" _
& "<th valign=top>col2</th>" _
& "<th nowrap valign=top>col3<br>one<br>two</th>" _
Adodc1 = New ADODB.Recordset
Dim strQuery As String = "SELECT * FROM sample"
' conn is global Adodb.Connection
Adodc1.Open(strQuery, conn)
If Not Adodc1.EOF Then
Do Until Adodc1.EOF
strHTMLMessage.Append(vbCrLf & "<tr bgcolor=#ffcccc>")
strHTMLMessage.Append("<td nowrap align=left>" &
tmpPlay.StationName & "</td><td nowrap align=left>" &
tmpPlay.PresentationRegion & "</td>")
loop
strHTMLMessage.Append("</tr>")
Next
' end of table
strHTMLMessage.Append("</table>")
strHTMLMessage.Append("</body></html>")
End Sub
Public Sub SendEmail()
Dim strBody As New StringBuilder
Dim mailmsg As CDO.Message
Dim Conf As CDO.Configuration
mailmsg = New CDO.Message
mailmsg.Configuration.Load(CDO.CdoConfigSource.cdoIIS)
eMailFrom = "(e-mail address removed)"
GetEmailBody(strBody)
eMailSubject = "testing"
With mailmsg
.From = eMailFrom
.Subject = eMailSubject
.To = recp(i).email
.HTMLBody = strBody.ToString
.Send()
End With
End Sub