【问题标题】:send email as template in asp.net在 asp.net 中作为模板发送电子邮件
【发布时间】:2012-10-18 08:41:38
【问题描述】:

我可以通过我的应用程序发送和接收电子邮件,但它只是纯文本内容。我想发送用 css 和 div 或表格装饰的完整格式的内容。 怎么做? 我正在使用 asp.net 3.5 VS2010。

public void Send(string To, string Subject, string Body)
{
    System.Net.Mail.MailMessage m = new System.Net.Mail.MailMessage("mymail@gmail.com", To);
    m.Subject = Subject;
    m.Body = Body;
    m.IsBodyHtml = true;
    m.From = new MailAddress("mymail@gmail.com");

    m.To.Add(new MailAddress(To));
    SmtpClient smtp = new SmtpClient();
    smtp.Host = "198.208.0.***";


    NetworkCredential authinfo = new NetworkCredential("mymail@gmail.com", "password");
    smtp.UseDefaultCredentials = false;
    smtp.Credentials = authinfo;
    smtp.Send(m);
}

像这样调用这个函数
Send("mynewmail@gmail.com", "testmail", "new test body"); 这是我的职责。

【问题讨论】:

    标签: c# asp.net visual-studio-2010


    【解决方案1】:

    答案在这里:http://social.msdn.microsoft.com/Forums/en/netfxnetcom/thread/c65502fa-955e-4fa1-b409-238bbb677df7

    我认为您缺少的主要内容是 LinkedResource 上的 MIME 内容类型。 myMagic.css:

       body {
          background-color: rgb(240,240,240);
          font-family: Verdana,Arial,Helvetica,Sans-serif;
          font-size: 10pt;
       }
       h2 {
          background-color: rgb(255,255,128);
          color: rgb(255,0,0);
       }
       p {
          background-color: rgb(0,0,255);
          color: rgb(0,255,0);
          font-style: italic;
       }
    

    程序.cs:

    using System.Net.Mail;
    using System.Net.Mime;
    
    namespace MailMessageHTML
    {
        class Program
        {
    
            private static MailMessage ConstructMessage(string from, string to, string subject)
            {
                const string textPlainContent =@"You need a HTML-capable mail agent to read this message.";
                const string textHtmlContent =@"<html><head><link rel='stylesheet' type='text/css' href='cid:myMagicStyle' />
    </head>
    <body>
    <h2>Hello world!</h2>
    <p>This is a test HTML e-mail message.</p>
    </body>
    </html>
    ";
    
       MailMessage result = new MailMessage(from, to, subject, textPlainContent);
       LinkedResource cssResource = new LinkedResource("myMagic.css", "text/css");
       //NOTE: Message encoding adds the surrounding <> on this Id cssResource.ContentId =myMagicStyle";
       cssResource.TransferEncoding = TransferEncoding.SevenBit;
    
          AlternateView htmlBody = AlternateView.CreateAlternateViewFromString( textHtmlContent , new ContentType("text/html"));
                htmlBody.TransferEncoding = TransferEncoding.SevenBit;
                htmlBody.LinkedResources.Add(cssResource);
    
                result.AlternateViews.Add(htmlBody);
    
                return result;
            }
    
            static void Main(string[] args)
            {
                MailMessage foo = ConstructMessage(
            "sender@foo.com"
                    ,"recipient@bar.com"
                    , "Test HTML message with style."
                    );
                SmtpClient sender = new SmtpClient();
                sender.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
                sender.PickupDirectoryLocation = @"...\MailMessageHTML\bin\Debug\";
                sender.Send(foo);
            }
        }
    }
    

    注意 1:我在上面的消息部分中指定了 TransferEncoding.SevenBit。您通常不会在生产环境中执行此操作 - 我只在此处执行此操作,因此您可以使用记事本读取生成的 .eml 文件以查看生成的内容。

    注意 2:许多邮件代理不支持在邮件部分中链接的样式表。更可靠的方法可能是使用内联样式(即:HTML 消息正文中的 inline ... 块)。

    祝你好运,

    这个答案来自:http://social.msdn.microsoft.com/Forums/en/netfxnetcom/thread/c65502fa-955e-4fa1-b409-238bbb677df7

    【讨论】:

    • 感谢您的回复,检查更新的代码并建议我应该在哪里进行更改。
    【解决方案2】:

    如果您不需要动态内容(if/else 或 foreach)或模型绑定。我认为将您的模板放入文本文件并使用 string.Format() 就足够了。

    否则,您将需要模板引擎。 This question 可能是您的一个很好的参考。

    【讨论】:

    • 感谢您的回复,检查更新的代码并建议我应该在哪里进行更改。
    【解决方案3】:

    看看 github 上的MvcMailer

    它使用视图引擎来呈现电子邮件,因此您可以享受视图模型和模板的所有好处。

    【讨论】:

    • 感谢您的回复,检查更新的代码并建议我应该在哪里进行更改。
    【解决方案4】:

    查看http://www.campaignmonitor.com/css/,它展示了如何将 CSS 应用于电子邮件。

    另外,使用内联 CSS.. 你在设置 emailMessage.IsBodyHtml = true; 吗?

    【讨论】:

      猜你喜欢
      • 2011-04-04
      • 2020-09-11
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 2013-12-02
      • 2012-12-11
      • 2016-09-15
      相关资源
      最近更新 更多