Below is my code snippet to send email:
MySqlCommand cmdsd;
MySqlConnection conn;
string s23 = "";
conn = new MySqlConnection("server=localhost;database=projecttt;uid=root;password=techsoft");
conn.Open();
//smtp which will be loaded is webmail.techsofttechnologies.com
cmdsd = new MySqlCommand("select smtp from smtp", conn);
MySqlDataReader dr45 = cmdsd.ExecuteReader();
while (dr45.Read())
{
s23 = dr45.GetString(0).Trim();
}
string s1 = textBox3.Text;
string s4 = textBox1.Text;
string S5 = textBox2.Text;
string attachment = textBox5.Text;
MailMessage mail = new MailMessage();
mail.From = new MailAddress(s4, S5);
mail.BodyEncoding = Encoding.UTF8;
mail.To.Add(s1);
mail.Subject = textBox4.Text;
mail.Body = "<body>"+textBox6.Text+"</body>";
//mail.Body = textBox6.AppendText("\n");
AlternateView planview = AlternateView.CreateAlternateViewFromString("This is my plain text content, viewable tby those clients that don't support html");
AlternateView htmlview = AlternateView.CreateAlternateViewFromString("<b>This is bold text and viewable by those mail clients that support html<b>");
mail.IsBodyHtml = true;
mail.Priority = MailPriority.High;
System.Net.Mail.Attachment jil = new System.Net.Mail.Attachment(attachment);
mail.Attachments.Add(jil);
SmtpClient smtp = new SmtpClient(s23);
try
{
smtp.Send(mail);
}
catch (Exception ex)
{
开发者_如何转开发Exception exc = ex;
string Message = string.Empty;
while (exc != null)
{
Message += exc.ToString();
exc = exc.InnerException;
}
}
conn.Close();
this.Close();
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}
The message body contains the text with line breaks.
But I am unable to format the text. In the mail it appears as a continuous line with space replacing the line breaks.
How can I make it work as expected?
You probably need to convert the newlines to proper HTML breaks:
text.Replace("\n", "<br/>")
For the HTML version of the email you will need to replace linebreaks with <br />
tags. A simple string.Replace
should do this.
For the plaintext email I'm going to guess your email is formatted as you need and you're using Outlook to receive the email.
Outlook helpfully removes what it deems to be additional whitespace (which tends to be any whitespace). There's an option to turn it off, usually given at the top of the window when you open the message fully.
To switch it off for Outlook entirely:
Tools > Options > Preferences > E-mail Options... > Uncheck Remove extra line breaks in plain text messages
HI all,
Thanks for all the help you people gave.
I got the answer in the following link
http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/Q_23552772.html?sfQueryTermInfo=1+bodi+c+email+format+send+while
Basically the replace function will give the answer.
The complete answer is as below:
//The text will be loaded here
string s2= textBox6.Text;
//All blank spaces would be replaced for html subsitute of blank space( )
s2 = s2.Replace(" ", " ");
//Carriage return & newline replaced to <br/>
s2=s2.Replace("\r\n", "<br/>");
string Str = "<html>";
Str += "<head>";
Str += "<title></title>";
Str += "</head>";
Str += "<body>";
Str += "<table border=0 width=95% cellpadding=0 cellspacing=0>";
Str += "<tr>";
Str += "<td>" + s2 + "</td>";
Str += "</tr>";
Str += "</table>";
Str += "</body>";
Str += "</html>";
mail.Subject = textBox4.Text;
mail.Body = Str;
精彩评论