c#修改HTML内容

本文关键字:内容 HTML 修改 | 更新日期: 2023-09-27 18:05:04

我试图发送一封带有HTML正文的电子邮件,在我发送邮件之前,我想修改一些HTML。基本上就像你会在jquery,我需要改变div内的一些文本值与某些id。

我试图使用https://github.com/jamietre/CsQuery,但我没有找到任何关于ID选择器的信息。

有人能推荐其他的解决方案吗?

这是我现在的sendEmail代码:

public static void sendEmail(String reciverMail, String Subject1, String Body1)
{
    if (reciverMail.Contains('@') && reciverMail != "")
    {
        using (StreamReader reader = File.OpenText(HttpContext.Current.Server.MapPath("~/mail.htm")))
        {
            SmtpClient client = new SmtpClient();
            client.UseDefaultCredentials = false;
            client.Credentials = SmtpServerCredentials;
            client.Host = SmtpServerAddress;
            MailMessage mail = new MailMessage();
            mail.From = new MailAddress(SenderAddress, SenderName1);
            mail.To.Add(reciverMail);
            mail.Subject = Subject1;
            mail.IsBodyHtml = true;
            mail.BodyEncoding = System.Text.Encoding.UTF8;
            //mail.Body = Body1;
            mail.Body = reader.ReadToEnd();
            try
            {
                client.Send(mail);
            }
            catch (SmtpException ex)
            {
                string aaa = ex.Message;
            }
        }
    }
}

c#修改HTML内容

你可以使用Html敏捷包:这是一个可爱的HTML解析器,通常被推荐用于这类工作。

你可以这样写:

HtmlDocument htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml("Your content");
string centralDiv = htmlDocument.DocumentNode.SelectSingleNode("//div[@id='centralDiv ']").InnerHtml;

如果这是一个c#网站(而不是桌面应用程序),你最好使用邮政(http://aboutcode.net/postal/)之类的东西来生成你的HTML模板。然后,你可以忘记DOM操作的复杂性,使用你知道的工具(使用Razor语法的视图等)。

如果你正在处理一个应用程序,Postal也支持在网站 (http://aboutcode.net/postal/outside-aspnet.html)之外工作,但该技术与生成MVC razor视图相同,因此你需要了解一点MVC/razor &观点。

你可以安装邮政免费通过NuGet。凭据将进入您的web。配置(sendgrid是一个非常好的健壮的,免费的选项,每月发送少于10,000封电子邮件)。

您的操作代码变得简单,如:

public static void sendEmail(String reciverMail, String Subject1, String Body1)
{
    dynamic email = new Email("MyTemplate");
    email.To = reciverMail;
    email.Body1 = Body1;            // Just make up your own properties to send in values!
    email.Subject = Subject1;
    email.Send();
}

你只需创建一个Razor视图作为模板:

。~ ' Views '电子邮件' MyTemplate.cshtml

To: @ViewBag.To
From: somewhere@mysite.com
Subject: @ViewBag.Subject
Hello,
<div>
    @ViewBag.Body1
</div>

你可以看到它可以扩展到插入任意多的元素,在电子邮件的任何地方,在一个真正可读/可维护的格式

Html,纯文本电子邮件:

Postal还支持发送您的电子邮件作为文本 HTML版本通过提供每个电子邮件两个模板。http://aboutcode.net/postal/multi-part.html

我已经在几个项目中使用了Postal,并且发现仅维护的便利性就值得使用。对于像电子邮件模板这样简单的东西,您不应该摆弄DOM操作。您可能要求使用"DOM操作",但这是一种更实用的方法。