I'm trying to use stringbuilder to create a body of string to be used in a text (not HTML) email. However some lines (where i include dynamic data, a new line is not added, but in some the newline works as intended.
Is there something basic i'm missing when using the stringbuilder class or is there some more fundamental process that should be happening?
in the below code:
sbUser.AppendLine("Please find below confirmation of your registration details. If any of these details are incorrect, please email [email protected]");
sbUser.AppendLine();
sbUser.AppendLine("Selected event : " + ContentPage.FetchByID(int.Parse(ddlEvent.SelectedValue)).PageTitle);
sbUser.AppendLine("Date of event : " + thisEvent.EventStartDate.ToString("dd MMM yyyy"));
sbUser.AppendLine("==============================================================");
sbUser.AppendLine();
(ContentPage and thisEvent are custom classes built using Subsonic(v2). PageTitle is an output type of string)
is get this as an output:
Please find below confirmation of your registration details. If any of these details are incorrect, please email [email protected]
Selected event : My Event Date of event : 16 Sept 2012 ==============================================================
as you can see, everything after the 3rd line in the code makes everything go on to one line.
however, further down the code i use:
sbRR.AppendLine("First name : " + txtFirstname.Text.Trim());
sbRR.AppendLine("Surname : " + txtSurname.Text.Trim());
etc,
and all these appear on seperate lines correctly. I can't see why this is happening.
the email is composed as such
mailMessage.Body = sbUser.ToString() + sbRR.ToString();
adding the following code:
sbUser.AppendLine("Selected event : " + ContentPage.FetchByID(int.Parse(ddlEvent.SelectedValue)).PageTitle + Environment.NewLine);
sbUser.AppendLine("Date of event : " + thisEvent.EventStartDate.ToString("dd MMM yyyy") + Environment.NewLine);
produces the following output:
Selected event : My Event
Date of event : 16 Sept 2012
==============================================================
which works i suppose, except it's added 2 newlines (the AppendLine and the Environment.NewLine). it seems that pulling the data directly straight from the database into a stringbuilder seems to be messing with the line ending. Even if I add text after the database pull, it still stays on one line.
UPDATE
doing
StringBuilder.Append("blah"+Environment.NewLine)
produces the correct result, however i'm still not understanding why that works and .AppendLine("blah"+<database content>)
doesn't work.
StringBuilder sb = new StringBuilder(1024);
– HaycockSQL_Latin1_General_CP1_CI_AS
and the column data type isnvarchar(150)
not sure why this would change the culture (en-GB) although the language of the database server isenglish (US)
– Hogback