Как отправить отформатированный текст по электронной почте с помощью C #? - PullRequest
1 голос
/ 02 ноября 2009

Ниже приведен фрагмент кода для отправки электронного письма:


            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);
        }

    }

Тело сообщения содержит текст с переносами строк.

Но я не могу отформатировать текст. В письме это выглядит как непрерывная строка с пробелами, заменяющими разрывы строк.

Как я могу заставить его работать как положено?

Ответы [ 3 ]

5 голосов
/ 02 ноября 2009

Возможно, вам нужно преобразовать переводы строк в правильные HTML-разрывы:

text.Replace("\n", "<br/>")
1 голос
/ 02 ноября 2009

Для HTML-версии электронного письма вам потребуется заменить разрывы строк тегами <br />. Простой string.Replace должен сделать это.

Для открытого текста я предполагаю, что ваше письмо отформатировано так, как вам нужно, и вы используете Outlook для получения электронного письма.

Outlook старательно удаляет то, что он считает дополнительным пробелом (который обычно является любым пробелом). Есть возможность отключить его, как правило, в верхней части окна, когда вы полностью открываете сообщение.

Чтобы полностью отключить его для Outlook:

Инструменты > Параметры > Параметры > Параметры электронной почты ...> Снять отметку Удалить дополнительные разрывы строк в текстовые сообщения

0 голосов
/ 03 ноября 2009

Привет всем,

Спасибо за всю помощь, которую вы, люди, оказали.

Я получил ответ по следующей ссылке

http://www.experts -exchange.com / Программирование / Языки / .NET / ASP.NET / Q_23552772.html? SfQueryTermInfo = 1 + води + с + электронная почта + формат + отправить + в то время

По сути, функция замены даст ответ.

Полный ответ приведен ниже:


            //The text will be loaded here
            string s2= textBox6.Text;     

            //All blank spaces would be replaced for html subsitute of blank space(&nbsp;) 
            s2 = s2.Replace(" ", "&nbsp;");          

            //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;          

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...