Skip to main content
 首页 » 编程设计

c#之在 asp.net 中将电子邮件作为模板发送

2024年01月28日32jackei

我可以通过我的应用程序发送和接收电子邮件,但它只是纯文本内容。我想发送用 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"); 这是我的职责。

请您参考如下方法:

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

我认为您缺少的主要内容是 LinkedResource 上的 MIME 内容类型。 我的魔法.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 消息正文中的内联 ... block )。

祝你好运

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