【问题标题】:Html page to stringHtml 页面转字符串
【发布时间】:2012-02-05 00:42:18
【问题描述】:

我正在向我的用户发送 HTML 格式的电子邮件。那里有很多编辑,比如用户名、用户生日和许多其他详细信息。

现在,我不希望我的代码看起来像这样:

String message = "hello " + "David\n" + "congratulation for your " + birthday + "\nPleas visit our site\n" + siteLink + " to get your bonus";

是否有任何 C# 工具可以让我轻松编辑?

【问题讨论】:

  • 请展示一些源代码...你试过什么?到底是什么不工作?

标签: c# html string smtpclient


【解决方案1】:

您似乎希望能够在单个字符串中指定命名标记,以便 HTML 易于阅读和编辑,如下所示:

"Hello {FirstName},\nPlease visit our site:\n{SiteLink}"

查看此答案以了解一些方法:Named string formatting in C#

【讨论】:

    【解决方案2】:
    string customBody = "<a href=\"www.oursite.com\">www.oursite.com</a>";
    string htmlBody = String.Format("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">";
            body += "<HTML><HEAD><META http-equiv=Content-Type content=\"text/html; charset=iso-8859-1\">";
            body += "</HEAD><BODY><DIV>{0}</DIV></BODY></HTML>", customBody);
    
    var message = new MailMessage(from, to);
    var mimeType = new System.Net.Mime.ContentType("text/html");
    var alternate = AlternateView.CreateAlternateViewFromString(htmlBody, mimeType);
    message.AlternateViews.Add(alternate);        
    message.IsBodyHTML = true;
    smtpClient.Send(message);
    

    参见 MSDN:

    【讨论】:

    • 它如何使编辑变得容易?我还有 20 个参数要推到那里......
    • 这不是 HTML 邮件格式的问题,但无论如何你可以使用StringBuilderstring.Format 有条件地构建 HTML 正文,或者可以创建一些辅助方法
    • 无论如何你只需要填写customBody 字符串,htmlBody 是标准页眉/页脚
    【解决方案3】:

    您可以简单地将html代码分配给message body

    message.Body = "<b> This is a bold Text </b>";
    message.IsBodyHTML = true;
    

    此外,您还可以利用MailDefinition Class。查看 this link 了解此类的使用情况。

    【讨论】:

      【解决方案4】:

      使用来自 MailMessage 的 isHtmlBody 属性

      例子:

      MailMessage msg = new MailMessage();
      msg.Body= "example of <a href='www.something.com'>Link</a>";
      msg.IsBodyHtml = True;
      ...    
      smtp.send(msg)
      

      见:

      IsBodyHtml Property

      Example

      【讨论】:

        【解决方案5】:

        string.Format() 可能就是你所追求的。

        string.Format() 将指定字符串中的每个格式项替换为对应对象值的等效文本。

        例如

         string.Format("Dear {0} {1}, You are {2} today.",
               person.Title, person.Lastname, person.Age);
        

        【讨论】:

          猜你喜欢
          • 2021-12-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-24
          • 1970-01-01
          相关资源
          最近更新 更多