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