读书人

浅谈:ASP.NET中运用System.Net.Mail发

发布时间: 2012-11-23 22:54:33 作者: rapoo

浅谈: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... ...}
 
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Net.Mail;using System.Text;using System.IO;using System.Net;using System.Net.Mime;namespace BI.MailService.Mail{    public class BIMailService    {        SmtpClient SmtpClient = null;   //设置SMTP协议        MailAddress MailAddress_from = null; //设置发信人地址  当然还需要密码        MailAddress MailAddress_to = null;  //设置收信人地址  不需要密码        MailMessage MailMessage_Mai = null;        FileStream FileStream_my = null; //附件文件流        #region 设置Smtp服务器信息        /// <summary>        /// 设置Smtp服务器信息        /// </summary>        /// <param name="ServerName">SMTP服务名</param>        /// <param name="Port">端口号</param>        private void setSmtpClient(string ServerHost, int Port)        {            SmtpClient = new SmtpClient();            SmtpClient.Host = ServerHost;//指定SMTP服务名  例如QQ邮箱为 smtp.qq.com 新浪cn邮箱为 smtp.sina.cn等            SmtpClient.Port = Port; //指定端口号            SmtpClient.Timeout = 0;  //超时时间        }        #endregion        #region 验证发件人信息        /// <summary>        /// 验证发件人信息        /// </summary>        /// <param name="MailAddress">发件邮箱地址</param>        /// <param name="MailPwd">邮箱密码</param>        private void setAddressform(string MailAddress, string MailPwd)        {            //创建服务器认证            NetworkCredential NetworkCredential_my = new NetworkCredential(MailAddress, MailPwd);            //实例化发件人地址            MailAddress_from = new System.Net.Mail.MailAddress(MailAddress, "报表系统");            MailMessage_Mai.From = MailAddress_from;            //指定发件人信息  包括邮箱地址和邮箱密码            SmtpClient.Credentials = new System.Net.NetworkCredential(MailAddress_from.Address, MailPwd);        }        #endregion        #region 检测附件大小        private bool Attachment_MaiInit(string path)        {            try            {                FileStream_my = new FileStream(path, FileMode.Open);                string name = FileStream_my.Name;                int size = (int)(FileStream_my.Length / 1024 / 1024);                FileStream_my.Close();                //控制文件大小不大于10M                if (size > 10)                {                    return false;                }                return true;            }            catch (IOException e)            {                return false;            }        }        #endregion        #region 添加收件人        /// <summary>        /// 添加收件人列表        /// </summary>        /// <param name="list">收件人名单</param>        private void AddAddressee(string[] list)        {            foreach (string address in list)            {                if (address != list[0])//第一个收件人已经添加                {                    MailAddress_to = new MailAddress(address);                    MailMessage_Mai.To.Add(MailAddress_to);                }                //MailMessage_Mai.CC.Add(new MailAddress("test@beisen.com"));//将收件人加入域中                //MailMessage_Mai.Bcc.Add(new MailAddress("1234567@qq.com"));            }        }        #endregion        public string SendMessage(string server, string accessoriesPath, string[] toMailAddressList, string subject, string body)        {            try            {                MailMessage_Mai = new MailMessage("test@gmail.com", toMailAddressList[0]);                MailMessage_Mai.Subject = subject;                MailMessage_Mai.SubjectEncoding = Encoding.UTF8;//进行字符格式转换,否则可能收到的邮件出现乱码                MailMessage_Mai.Body = body;                MailMessage_Mai.BodyEncoding = Encoding.UTF8;                MailMessage_Mai.IsBodyHtml = true;                MailMessage_Mai.Priority = MailPriority.High;//指定邮件优先级                SmtpClient = new SmtpClient(server);                string plainTextBody = "如果你邮件客户端不支持HTML格式,或者你切换到“普通文本”视图,将看到此内容";                MailMessage_Mai.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);                MailMessage_Mai.AlternateViews.Add(htmlBody);                setSmtpClient("smtp.gmail.com", 587);//587这是gmail的端口号,一般中国的邮箱发不了邮件就是因为端口号封闭了,不能提供第三方开发者调用。                setAddressform("test@gmail.com", "mima");                if (toMailAddressList.Length > 1)                {                    AddAddressee(toMailAddressList);                }                SmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;                SmtpClient.EnableSsl = true;                if (accessoriesPath.Trim() != "")                {                    MailMessage_Mai.Attachments.Clear();//添加附件                        MailMessage_Mai.HeadersEncoding = Encoding.UTF8;                    MailMessage_Mai.Attachments.Add(new Attachment(accessoriesPath, MediaTypeNames.Application.Octet));                }                SmtpClient.Send(MailMessage_Mai);                return "发送成功!";            }            catch (Exception ey)            {                throw ey;            }        }        public static MemoryStream GetImage()        {            //Code here... ...            return null;        }    }}

读书人网 >系统运维

热点推荐