Размер шрифта для электронного письма, отправленного с помощью System.Net.Mail.SmtpClient.

У меня есть веб-приложение ASP.Net, которое было тщательно протестировано. Одна его часть автоматически отправляет электронное письмо с помощью System.Net.Mail.SmtpClient. Во время тестирования с различных компьютеров с Windows 7 электронные письма отправлялись и были отформатированы с разумным размером шрифта. Я не устанавливаю размер шрифта в коде, кстати. Теперь, когда приложение запущено, первое электронное письмо было отправлено очень мелким шрифтом, и пользователи хотят, чтобы размер шрифта был увеличен. Конечно, я могу жестко закодировать размер шрифта, но я бы предпочел понять, что здесь происходит. Что определяет размер шрифта? Это что-то в SmtpClient, или какая-то настройка на SMTP-сервере, или что? Ниже приведен код, который отправляет электронное письмо. TemplateEditor — это элемент управления AjaxControlToolkit.HTMLEditor на странице. AttyParaMessageBody — это переменная, содержащая тело сообщения электронной почты. Наши пользователи используют Windows 7 с Outlook 2010.

string AttyParaMessageBody = TemplateEditor.Content;
LHEmail.SendEmail(LHClassLibrary.LHConfigurationManager.AppSettings["ApprovedNewVersionLHEmailSubject"].ToString(), AttyParaMessageBody, AttyParaAddressees, CurrentLitHoldDetails.ResponsibleAttorney.Email, LHClassLibrary.LHConfigurationManager.AppSettings["EmailCCList"].ToString() + ";" + tbEmails.Text);

public static void SendEmail(string subject, string body, string to, string from, string cc)
    {
        SendEmail(subject, body, to, from, cc, "", "", MailPriority.High);
    }

public static void SendEmail(string subject, string body, string to, string from, string cc, string bcc, string fileName, MailPriority Priority)
    {

        MailMessage msgMail = new MailMessage();
        SmtpClient emailClient = new SmtpClient();
        try
        {
            msgMail = BuildMessage(subject, body, to, cc, bcc, from, fileName, Priority);
            emailClient.Send(msgMail);
        }
        catch (Exception ex)
        {
            string exception = ex.ToString();
        }
        finally
        {
            msgMail.Dispose();
        }
    }

private static MailMessage BuildMessage(string subject, string body, string to, string cc, string bcc, string from, string fileName, MailPriority Priority)
    {
        MailMessage msgMail = new MailMessage();

        if (!to.Equals(string.Empty))
        {
            //format emails for .NET 4.0 version
            string[] toAddressList = to.Split(';');

            //Loads the To address field 
            foreach (string toaddress in toAddressList)
            {
                if (toaddress.Length > 0)
                {
                    msgMail.To.Add(toaddress);
                }
            }

            //optional args
            //format emails for .NET 4.0 version
            if (!cc.Equals(string.Empty))
            {
                string[] ccAddressList = cc.Split(';');

                //Loads the Cc address field 
                foreach (string ccaddress in ccAddressList)
                {
                    if (ccaddress.Length > 0)
                    {
                        msgMail.CC.Add(ccaddress);
                    }
                }
            }
            if (!bcc.Equals(string.Empty))
            {
                string[] bccAddressList = bcc.Split(';');

                //Loads the Bcc address field 
                foreach (string bccaddress in bccAddressList)
                {
                    if (bccaddress.Length > 0)
                    {
                        msgMail.Bcc.Add(bccaddress);
                    }
                }
            }
            if (!fileName.Equals(string.Empty))
                msgMail.Attachments.Add(new Attachment(fileName));

            msgMail.Priority = Priority;
            msgMail.From = ((from == null) || (from.Equals(string.Empty))) ? new MailAddress("[email protected]", "Litigation Hold") : new MailAddress(from, "Litigation Hold");
            msgMail.Subject = subject;
            msgMail.Body = body;
            msgMail.IsBodyHtml = true;

        }
        else { throw new SmtpFailedRecipientException("Failed to provide destination address"); }
        return msgMail;
    }

person Melanie    schedule 15.10.2013    source источник


Ответы (1)


По моему опыту, когда мне нужно отформатировать содержимое электронной почты, которое будет отправлено через SMTP, я буду использовать тег HTML, когда устанавливаю значение для переменной содержимого. Например:

String content = "<h2>Thank you for your e-mail</h2><font size=4>We appreciate your feedback.<br/> We will process your request soon</font><br/>Regards.";

Если ваш контент будет установлен в коде позади, вы можете использовать описанный выше метод.

Надеюсь, поможет.

person Koo SengSeng    schedule 16.10.2013
comment
Ку - спасибо за ваш вклад. Наконец-то я убедил пользователя признать, что он вырезал и вставлял содержимое из Word, из-за чего искажался размер шрифта. Ему сказали, чтобы с этого момента он использовал функцию «Вставить из Word» элемента управления Ajax. - person Melanie; 17.10.2013