ASP.NET中使用System.Net.Mail发邮件
一、一般的邮件发送
public static void SendMail()//普通的邮件发送 { MailAddress from = new MailAddress("FromEmail@website.com"); MailAddress to = new MailAddress("ToEmail@website.com"); MailMessage message = new MailMessage(from, to); message.Subject = "邮件标题"; message.Body = "邮件内容"; MailAddress copy = new MailAddress("mailto:CopyToEmail@website.com"); message.CC.Add(copy); SmtpClient client = new SmtpClient("SMTP Server"); client.Credentials = CredentialCache.DefaultNetworkCredentials; client.Send(message); }
二、带HTML格式的Email发送
public static void SendMail()//带HTML的邮件发送 { MailAddress from = new MailAddress("FromEmail@website.com"); MailAddress to = new MailAddress("ToEmail@website.com"); MailMessage message = new MailMessage(from, to); message.Subject = "邮件标题"; string plainTextBody = "如果你邮件客户端不支持HTML格式,或者你切换到“普通文本”视图,将看到此内容"; message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(plainTextBody, null, "text/plain")); string htmlBodyContent = "如果你的看到<b>这个</b>,说明你是在以 <span style=\"color:red\">HTML</span> 格式查看邮件<br><br>"; htmlBodyContent += "<a href=\"http://www.baidu.com//">百度一下</a>"; AlternateView htmlBody = AlternateView.CreateAlternateViewFromString(htmlBodyContent, null, "text/html"); message.AlternateViews.Add(htmlBody); MailAddress copy = new MailAddress("mailto:CopyToEmail@website.com "); message.CC.Add(copy); SmtpClient client = new SmtpClient("SMTP Server"); client.Credentials = CredentialCache.DefaultNetworkCredentials; client.Send(message); }
三、带附件的邮件
public static void SendMail()//带HTML的邮件发送 { MailAddress from = new MailAddress("FromEmail@website.com"); MailAddress to = new MailAddress("ToEmail@website.com"); MailMessage message = new MailMessage(from, to); message.Subject = "邮件标题"; string plainTextBody = "如果你邮件客户端不支持HTML格式,或者你切换到“普通文本”视图,将看到此内容"; message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(plainTextBody, null, "text/plain")); string htmlBodyContent = "如果你的看到<b>这个</b>,说明你是在以 <span style=\"color:red\">HTML</span> 格式查看邮件<br><br>"; htmlBodyContent += "<a href=\"http://www.baidu.com//">百度一下</a>"; AlternateView htmlBody = AlternateView.CreateAlternateViewFromString(htmlBodyContent, null, "text/html"); message.AlternateViews.Add(htmlBody); Attachment attachment = new Attachment("C:\\附件.rar"); message.Attachments.Add(attachment); MailAddress copy = new MailAddress("mailto:CopyToEmail@website.com"); message.CC.Add(copy); SmtpClient client = new SmtpClient("SMTP Server"); client.Credentials = CredentialCache.DefaultNetworkCredentials; client.Send(message); }
四、邮件为HTML,而且带图片
public static void SendMail()//带HTML,并且HTML中有图片的邮件发送 { MailAddress from = new MailAddress("FromEmail@website.com"); MailAddress to = new MailAddress("ToEmail@website.com"); MailMessage message = new MailMessage(from, to); message.Subject = "邮件标题"; string plainTextBody = "如果你邮件客户端不支持HTML格式,或者你切换到“普通文本”视图,将看到此内容"; message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(plainTextBody, null, "text/plain")); string htmlBodyContent = "如果你的看到<b>这个</b>,说明你是在以 <span style=\"color:red\">HTML</span> 格式查看邮件<br><br>"; htmlBodyContent += "<a href=\"http://www.baidu.com//">百度一下</a><img src=\"cid:imageInEmail\"/>"; AlternateView htmlBody = AlternateView.CreateAlternateViewFromString(htmlBodyContent, null, "text/html"); LinkedResource lrImage = new LinkedResource("C:\\图片.jpg", System.Net.Mime.MediaTypeNames.Image.Jpeg); lrImage.ContentId = "imageInEmail"; //此处的ContentId 对应 htmlBodyContent 内容中的 cid: ,如果设置不正确,请不会显示图片 htmlBody.LinkedResources.Add(lrImage); message.AlternateViews.Add(htmlBody); MailAddress copy = new MailAddress("mailto:CopyToEmail@website.com"); message.CC.Add(copy); SmtpClient client = new SmtpClient("SMTP Server"); client.Credentials = CredentialCache.DefaultNetworkCredentials; client.Send(message); }
五、图片为动态生成
public static void SendMail()//带HTML,并且HTML中有图片的邮件发送 { MailAddress from = new MailAddress("FromEmail@website.com"); MailAddress to = new MailAddress("ToEmail@website.com"); MailMessage message = new MailMessage(from, to); message.Subject = "邮件标题"; string plainTextBody = "如果你邮件客户端不支持HTML格式,或者你切换到“普通文本”视图,将看到此内容"; message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(plainTextBody, null, "text/plain")); string htmlBodyContent = "如果你的看到<b>这个</b>,说明你是在以 <span style=\"color:red\">HTML</span> 格式查看邮件<br><br>"; htmlBodyContent += "<a href=\"http://www.baidu.com//">百度一下</a><img src=\"cid:imageInEmail\"/>"; AlternateView htmlBody = AlternateView.CreateAlternateViewFromString(htmlBodyContent, null, "text/html"); MemoryStream imgStream = GetImage(); imgStream.Position = 0;//非常重要,否则图片为空!在邮件里显示红叉 LinkedResource lrImage = new LinkedResource(imgStream, System.Net.Mime.MediaTypeNames.Image.Jpeg); lrImage.ContentId = "imageInEmail"; //此处的ContentId 对应 htmlBodyContent 内容中的 cid: ,如果设置不正确,请不会显示图片 htmlBody.LinkedResources.Add(lrImage); message.AlternateViews.Add(htmlBody); MailAddress copy = new MailAddress("mailto:CopyToEmail@website.com"); message.CC.Add(copy); SmtpClient client = new SmtpClient("SMTP Server"); client.Credentials = CredentialCache.DefaultNetworkCredentials; client.Send(message); } public static MemoryStream GetImage() { //Code here... ... }