向用户发送电子邮件

时间:2010-09-23 07:31:22

标签: c# asp.net

我正在使用此代码发送电子邮件

var message = new MailMessage("abc@somedomain.com", "administrator@anotherdomain.com");
message.Subject = "Testing";
message.IsBodyHtml = true;
message.Body = "<html><body>IMAGINE A LOT OF HTML CODING HERE</body></html>";

问题是我只是复制了我想要发送的HTML作为电子邮件,现在我必须在一行中制作整个HTML代码!否则就是说“;”失踪!我的意思是,现在我不能继续删除空格并把它全部放在一行!这是我需要发送的HTML代码太多了。我该怎么办 ? :/

[编辑] 另一个问题:message.Body是否有限制?就像限制HTML可以插入多少?

4 个答案:

答案 0 :(得分:10)

Dan提供了一个选项 - 逐字字符串文字 - 但我建议您将数据移动到单独的HTML文件中。将它作为资源嵌入到程序集中,然后可以在执行时加载它。

通过这种方式,您将获得HTML语法突出显示,您不会使用大量数据混乱您的代码,并且您可以随时轻松地编辑它,而不必担心双引号(这会需要在逐字字符串文字中加倍,或在常规字符串文字中使用反斜杠进行转义。)

缺点是将用户数据放在HTML中变得更加困难 - 为此,您可能需要考虑使用模板系统;或者只是手写(html = html.Replace("$user", name))或可用的各种模板库之一。当然,请谨慎使用HTML转义。

答案 1 :(得分:6)

您可以使用@字符:

message.Body = @"
    <html>
        <body>
            IMAGINE A LOT OF HTML CODING HERE
        </body>
    </html>";

如果你有一个小的HTML标记/想要一个快速而肮脏的解决方案,这样就行了。对于生产代码,我建议您使用Jon Skeet建议的内容,保留单独的HTML文件。

答案 2 :(得分:2)

回答你的第二个问题:

“Body属性可以包含任何大小不超过4 MB的对象”

来自http://msdn.microsoft.com/en-us/library/system.messaging.message.body.aspx

答案 3 :(得分:1)

将文字放在多行上?

message.Body = "<html><body>IMAGINE A LOT OF "+
                " HTML CODING HERE</body></html>";
相关问题