代码之家  ›  专栏  ›  技术社区  ›  Eddie Deyo

什么是邮件信息。是吗?

  •  16
  • Eddie Deyo  · 技术社区  · 16 年前

    我正在测试通过C#发送一些电子邮件,但我不知道效果如何 IsBodyHtml true 有不管值是多少,我在身体里发送的任何内容都会显示为“text/plain”的内容类型,我的HTML会显示标签,所有内容都会显示在我的电子邮件客户端(gmail)中。那面旗子到底应该做什么?

    注意:我可以通过创建一个 AlternateView 对于“text/html”的内容类型,我只想了解设置主体应该如何工作。

    3 回复  |  直到 16 年前
        1
  •  21
  •   Zachary    16 年前

    以下是我每天使用的SMTP助手的摘录。。。。

    public bool SendMail(string strTo, string strFrom, string strCc, string strBcc, string strBody, string strSubject)
    {
    
        bool isComplete = true;
    
        SmtpClient smtpClient = new SmtpClient();
        MailMessage message = new MailMessage();
    
        try
        {
            //Default port will be 25
            smtpClient.Port = 25;
    
            message.From = new MailAddress(smtpEmailSource);
            message.To.Add(strTo);
            message.Subject = strSubject;
    
            if (strCc != "") { message.Bcc.Add(new MailAddress(strCc)); }
            if (strBcc != "") { message.Bcc.Add(new MailAddress(strBcc)); }
    
            message.IsBodyHtml = true;
    
            string html = strBody;  //I usually use .HTML files with tags (e.g. {firstName}) I replace with content.  This allows me to edit the emails in VS by opening a .HTML file and it's easy to do string replacements.
    
            AlternateView htmlView = AlternateView.CreateAlternateViewFromString(html, new ContentType("text/html"));
    
            message.AlternateViews.Add(htmlView);
    
    
            // Send SMTP mail
            smtpClient.Send(message);
        }
        catch
        {
            isComplete = false;
        }
    
        return isComplete;
    }
    

    [更新]

    我最初提到的要点。。。

    1. IsBodyHtml声明您的邮件是HTML格式的。如果你只发送一个HTML视图,这就是你所需要的。

    2. AlternateView用于存储我的HTML,这不是发送HTML消息所必需的,但如果你想发送包含HTML和纯文本的消息,在接收者无法呈现HTML的情况下,这是必需的。

    我拿出了上面的平面图,所以这不明显,抱歉。。。

    这里的关键是,如果要发送HTML格式的消息,需要使用IsBodyHtml=true(默认值为false)将内容呈现为HTML。

        2
  •  16
  •   JerSchneid    15 年前

    我只是在努力解决同样的问题。我最好的解决办法是避免设置 Body 财产 MailMessage 反对。相反,只需添加两个 AlternateView s、 首先是纯文本,然后是HTML。确保首先添加纯文本版本,因为MIME标准规定:

    格式的顺序取决于它们对原文的忠实程度,最不忠实的排在第一位,最忠实的排在最后。

    这意味着,首先要使用纯文本版本,因此如果可能的话,客户端应该使用HTML版本。

        3
  •  -4
  •   RAMESH Ravichandran    10 年前

    IsBodyHtml–指定正文是包含文本还是HTML标记。

    正文包含应通过IsBodyHtml标识的文本或html标记。