在运行时生成 HTML 文件并作为电子邮件附件发送

2023-12-13

我有一个项目要求,我们需要将 HTML 格式的日志表附加到发送给用户的电子邮件中。我不希望日志表成为正文的一部分。我不想使用 HTMLTextWriter 或 StringBuilder,因为日志表非常复杂。

是否有另一种我没有提到的方法或可以使这变得更容易的工具?

注意:我已经使用 MailDefinition 类并创建了一个模板,但我还没有找到一种方法将其作为附件(如果可能的话)。


由于您使用的是 WebForms,我建议将控件中的日志表呈现为字符串, 进而将其附加到 MailMessage.

渲染部分看起来有点像这样:

public static string GetRenderedHtml(this Control control)
{
    StringBuilder sbHtml = new StringBuilder();
    using (StringWriter stringWriter = new StringWriter(sbHtml))
    using (HtmlTextWriter textWriter = new HtmlTextWriter(stringWriter))
    {
        control.RenderControl(textWriter);
    }
    return sbHtml.ToString();
}

如果您有可编辑控件(TextBox, DropDownList等),您需要在调用之前将它们替换为标签或文字GetRenderedHtml(). See 这篇博文一个完整的例子。

这是MSDN 附件示例:

// Specify the file to be attached and sent.
// This example assumes that a file named Data.xls exists in the
// current working directory.
string file = "data.xls";
// Create a message and set up the recipients.
MailMessage message = new MailMessage(
   "[email protected]",
   "[email protected]",
   "Quarterly data report.",
   "See the attached spreadsheet.");

// Create  the file attachment for this e-mail message.
Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);
// Add time stamp information for the file.
ContentDisposition disposition = data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(file);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
disposition.ReadDate = System.IO.File.GetLastAccessTime(file);
// Add the file attachment to this e-mail message.
message.Attachments.Add(data);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在运行时生成 HTML 文件并作为电子邮件附件发送 的相关文章

  • asp.net 文本框文本模式数字,仅允许数字

    我只是想知道 ASP NET 中是否有一种方法只允许文本框中的数字textmode number 当我使用这个时
  • 为什么大多数 C 开发人员使用 Define 而不是 const? [复制]

    这个问题在这里已经有答案了 在许多程序中 define与常量具有相同的用途 例如 define FIELD WIDTH 10 const int fieldWidth 10 我通常认为第一种形式优于另一种形式 它依赖于预处理器来处理基本上是
  • 如何创建可以像 UserControl 一样编辑的 TabPage 子类?

    我想创建一个包含一些控件的 TabPage 子类 并且我想通过设计器来控制这些控件的布局和属性 但是 如果我在设计器中打开子类 我将无法像在 UserControl 上那样定位它们 我不想创建一个带有 UserControl 实例的 Tab
  • 使用post方法将多个参数发送到asp.net core 3 mvc操作

    使用 http post 方法向 asp net mvc core 3 操作发送具有多个参数的 ajax 请求时存在问题 参数不绑定 在 dot net 框架 asp net web api 中存在类似的限制 但在 asp net mvc
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • 检查算术运算中的溢出情况[重复]

    这个问题在这里已经有答案了 可能的重复 检测 C C 中整数溢出的最佳方法 https stackoverflow com questions 199333 best way to detect integer overflow in c
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • 即使手动设置显示环境变量后,WSL Ubuntu 也会显示“错误:无法打开显示”

    我在 WSL Ubuntu 上使用 g 我使用 git 克隆了 GLFW 存储库 使用了ccmake命令配置并生成二进制文件 然后使用make在 build 目录中最终创建 a文件 我安装了所有OpenGL相关的库 usr ld 我不记得我
  • ASP.NET C# 中的自定义控件

    我创建了一个简单的自定义控件 它仅继承自Literal控件 并且还没有任何扩展 代码为空 命名空间 CustomControls 类名 文字 System Web UI WebControls Literal 接下来我要做的就是在aspx页
  • Azure 事件中心 - 按顺序接收事件

    我使用下面的代码从 Azure Event Hub 接收事件 https learn microsoft com en us azure event hubs event hubs dotnet framework getstarted s
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 当“int”处于最大值并使用 postfix ++ 进行测试时,代码定义良好吗?

    示例 未定义行为的一个示例是整数溢出的行为 C11dr 3 4 3 3 int溢出是未定义的行为 但这是否适用于存在循环的以下内容 并且不使用现在超出范围的副作用i 特别是 这是否后缀增量规格帮助 结果的值计算在副作用之前排序 更新操作数的
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 获取 2 个数据集 c# 中的差异

    我正在编写一个简短的算法 它必须比较两个数据集 以便可以进一步处理两者之间的差异 我尝试通过合并这两个数据集并将结果更改放入新的数据集来实现此目标 我的方法如下所示 private DataSet ComputateDiff DataSet
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • 在类的所有方法之前运行一个方法

    在 C 3 或 4 中可以做到这一点吗 也许有一些反思 class Magic RunBeforeAll public void BaseMethod runs BaseMethod before being executed public
  • 我在在线程序挑战编译器中遇到演示错误

    include
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项

随机推荐

  • 使用 Windows 身份验证从非域计算机访问 SQL Server 2005

    我有一个 Windows 域 其中一台计算机正在运行 SQL Server 2005 并且配置为仅支持 Windows 身份验证 我想在同一网络上但不在域上的计算机上运行 C 客户端应用程序 并访问 SQL Server 2005 实例上的
  • 如何通过仅输入同一个小部件来将文本输入到两个文本小部件中

    我想要一种方法 通过将文本输入到单个文本小部件中 可以将文本插入到两个小部件中 简单来说 在编程中 我想将文本小部件的所有功能和事件绑定到另一个文本小部件 我试过了 txt Text root height 300 width 300 tx
  • 单击按钮时如何将 Paypal 集成到付款用户?

    这可能听起来有点奇怪 但我正处于完成向用户付费的应用程序的最后阶段 该应用程序中有一项活动 当用户使用该应用程序时 金钱就会不断累积 我在该活动中有一个名为 兑现 的按钮 当用户达到一定金额时可以单击该按钮 并且应该让用户提取从应用程序中累
  • 从 Google 网站运行 Webapp 中发布的函数

    我想在谷歌网站的网络应用程序中运行一个函数onload功能 code gs function doGet e return HtmlService createHtmlOutputFromFile page function myfunc
  • 跨时间段的值的扁平分配

    对于不同的值id我有一个start and end具有相对数量的日期 var 对于每条记录 对于相同的id start日期与前一个日期相同end日期 来了roll 这些时期跨越数月甚至数年 我的需要是将数量分成var与每个月的实际天数相关的
  • Angular指令如何向元素添加属性?

    我想知道这个片段的工作方式是什么 html div div a user name a div div js var app angular module app app controller AppCtrl function scope
  • JavaScript 数组中对象的分组、不同计数、求和

    这可能是补救措施 但我无法弄清楚 我尝试过使用 d3 并使用 lodash 来获得有效的解决方案 但没有得到任何接近的结果 我有一个 JavaScript 对象数组 如果 Selected 值为 true 我想创建一个按 Version N
  • Access 中 Left() 和 Left$() 函数的区别

    我正在尝试调试损坏的查询 查询使用 Left blahblah 4 而不是 Left blahblah 4 Left 和 Left 函数有什么区别 微软访问 结尾的 是 String 数据类型的类型声明字符 VBA Left 返回的结果是一
  • cakephp-file-storage 快速入门指南

    https github com burzum cakephp file storage blob 3 0 docs Tutorials Quick Start md 按照教程 一切都搞砸了 或者我都搞砸了 三个表 产品图像 和 产品图像
  • 将 Django 项目移植到 Python 3 和 Django 2 时的迁移问题

    我一直在将 Django 项目移植到 Python 3 和 Django 2 我必须按照 Django 2 中的要求 将 on delete 添加到带有外键的所有模型中 现在我尝试对这些更改进行迁移TypeError init missin
  • 使用 cout << 运算符时如何用前导零填充浮点数

    将这些问题放在一起 使用 cout 使用 cout 打印正确的小数位数 我如何流式传输到 std cout 例如这个变量 double x 7 1224 并让它看起来像这样 07 12 Combine std setw std setfil
  • 限制 UITextField 中的字符数[重复]

    这个问题在这里已经有答案了 我看过很多答案 但似乎没有一个起作用 我有一个以编程方式创建的 UIAlertView 其中包含两个 UITextFields 我想限制字符数 第一个字段有 12 个字符 第二个字段中有 1 个字符 第一个字段代
  • 在 iOS 5 中预填充核心数据

    貌似有一些修改NSPersistentStoreCoordinator方法是iOS 5 我正在尝试获取预填充的数据库 它似乎不起作用 没有崩溃 但似乎没有数据存在 有什么建议吗 NSPersistentStoreCoordinator pe
  • 根据批准状态和特定订单项目更改 WooCommerce 订单状态

    当当前状态为 已批准 且订单包含特定产品 id 10 时 我尝试将 WooCommerce 订单状态更改为 处理中 我尝试了下面的代码 但它不起作用 我对 php 很陌生 希望得到任何指导 add action woocommerce or
  • __lt__ 实际上对列表做什么[重复]

    这个问题在这里已经有答案了 假设我有两个列表 然后运行以下命令 gt gt gt s 1 2 3 gt gt gt t 1 2 4 gt gt gt s gt t False gt gt gt s lt t True 但是如果我运行以下命令
  • 显示子级的innerHTML

    i have td div aaaaaa div td 我怎样才能获得 td1 的孩子的innerHTML function displaymessage var i 0 alert document getElementById td1
  • 更新/提取 Mongodb/Mongoose 子文档数组中包含的数组中的值

    我在 mongoDB 集合中有一个文档 如下所示 id 5d4721e0b904e825755eaf89 sellers id 5d5eeaf7867a4e1e9a1219e6 bizs id 6a5eeaf7867a4e124a1219a
  • C 语言有 setfill() 替代方案吗?

    In C int main cout lt lt setfill lt lt setw 10 lt lt 5 lt lt endl return 0 Outputs 5 有没有setfill C 的替代品 或者如何在 C 中执行此操作而无需
  • Windows 窗体应用程序,带有窗体的自动缩放控件

    我是新手 设计一个可以调整大小的表单 并且我希望我的文本框 标签和按钮随表单调整大小 有人可以告诉我该怎么做吗 这取决于您需要的布局类型 您必须执行的 基本工具 具有以下属性 Anchor and Dock Anchor 使用 Anchor
  • 在运行时生成 HTML 文件并作为电子邮件附件发送

    我有一个项目要求 我们需要将 HTML 格式的日志表附加到发送给用户的电子邮件中 我不希望日志表成为正文的一部分 我不想使用 HTMLTextWriter 或 StringBuilder 因为日志表非常复杂 是否有另一种我没有提到的方法或可