【问题标题】:Custom e-mail pages from MVC using HTML and model使用 HTML 和模型从 MVC 自定义电子邮件页面
【发布时间】:2017-12-19 04:21:42
【问题描述】:

我正在使用“System.Net.Mail”在我的代码中发送电子邮件。它允许以 HTML 格式发送电子邮件正文。我需要使用来自我的模型和引导程序的数据来自定义和装饰我的电子邮件。

所以,我在这里尝试创建 HTML 页面并尝试将其与模型中的数据集成,然后将 HTML 页面作为字符串传递给电子邮件对象的“正文”。

这是否有意义或有其他方法可以做到这一点?

P.S:我正在尝试构建一个 HTML 表,它根据模型中的数据动态获取行。

【问题讨论】:

标签: c# asp.net-mvc razor


【解决方案1】:

我一直用这个工具http://aboutcode.net/postal。试试看,它会为您节省大量编码。

【讨论】:

  • 你有一个有效的例子吗?无法让它工作!
  • 浏览网站,非常简单的指南。
【解决方案2】:

这是一个例子。我什至包含了一些 CSS 来展示如何设置电子邮件样式。 “项目”是我循环创建网格的模型。

CSS 支持在大多数电子邮件客户端中是有限的,因此您可能无法让 Bootstrap 工作,但您可以尝试。如果没有,你仍然可以完成类似 Bootstrap 的响应式设计。下面的示例在调整页面大小时保持居中并保持 100% 宽度。

var projects = db.Projects.Select(p => new { p.Name, p.Description } );

var grid = new StringBuilder();

foreach (var project in projects)
{
    grid.Append($@"<tr'>
            <td>{project.Name}</td>
            <td>{project.Description}</td>
        </tr>");
}

var body = $@"
    <style>
        body {{ color: #444 }}
        h2 {{ margin-top: 0; margin-bottom: 0 }}
        .container {{ text-align: center }}
        table {{ margin-left: auto; margin-right: auto; font-size: 20; width: 100% }}
        .heading {{ font-weight: bold; background-color: #f1f4ff }}
        td {{ padding-top: 8px; padding-bottom: 8px; padding-left: 16px; padding-right: 16px }}
    </style>

    <div class='container'>
        <h2>Hello from Mail</h2>

        <table class='grid' cellpadding='0' cellspacing='0'>
            <tr class='heading'>
                <td>Project Name</td>
                <td>Project Description</td>
            </tr>
            {grid}
        </table>
    </div>
";

client.Send(mail);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2021-07-09
    • 2011-12-08
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多