【问题标题】:how to grab dynamic html and send it out with email?如何获取动态 html 并通过电子邮件发送出去?
【发布时间】:2009-09-23 19:31:28
【问题描述】:

假设我有一个由 MVC 视图生成的动态 html 表单(带有样式表的数据库数据)。然后我想用电子邮件发送相同的 html。例如,结果可能是这样的:

  <div id="DivForPrint">
        <fieldset>
            <legend>Hello</legend>
            <table>
                <tbody><tr>
                    <td>
                        <label for="ID">
                            ID&nbsp;#:</label>
                    </td>
                    <td>
                        <span class="displayData">
                            9
                        </span>
                    </td>
                    <td width="100%"></td>
                    <td>
                        <label>
                            Date:
                        </label>
                    </td>
                    <td width="100px">
                        <span class="displayData">
                            23/09/2009_2:28_PM
                        </span>
                    </td>
                </tr>
            </tbody></table>
        </fieldset>
    </div>

如何获取并通过电子邮件发送出去?即使我可以设置类似 mail.IsBodyHtml = true;但是发送电子邮件时样式表不可用

【问题讨论】:

    标签: asp.net-mvc html-email


    【解决方案1】:

    你是对的。样式表不可用,因为绝大多数电子邮件客户端不会加载除图像之外的任何外部内容。如果您想要样式化内容,则应使用内联样式定义创建它。

    我刚刚找到了这个pretty awesome tool,它将样式定义和相关的 HTML 转换为内联样式定义。

    【讨论】:

    • 从听起来我至少部分误解了你的问题,希望我的回答仍然有用。 :)
    【解决方案2】:

    我很确定您可以通过调用 ViewResult 的 View.Render() 方法然后查看传入的文本编写器来获得 View 的输出。

    不过,这完全只是我的假设。

    【讨论】:

    • 如果这确实有效,您可以发挥创意并构建一个服务来复制我上面链接的工具,然后将来自您的视图的 HTML 响应与其链接的样式表(或本地样式 - 任何一个)连接起来并发送“inline-style-ification”服务的整个字符串。这样您就可以继续使用您的链接样式,并且完全动态地构建内联样式的电子邮件。那会很酷!
    • 是的。我现在真的很忙,但实际上我已经考虑过使用 Views 为电子邮件呈现 html(在我正在从事的下一个项目中,这可能是一个“事情”)。当我开始解决这个问题时,我会提供一些示例代码。
    猜你喜欢
    • 2014-03-22
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 2014-07-01
    相关资源
    最近更新 更多