C#发送邮件

  1 public string Send(EmailInfo info)
  2         {
  3             MailAddress from = new MailAddress(info.Sender.Email, info.Sender.Name); //邮件的发件人
  4 
  5             MailMessage mail = new MailMessage();
  6 
  7             //设置邮件的标题
  8             mail.Subject = info.Subject;
  9 
 10             //设置邮件的发件人
 11             //Pass:如果不想显示自己的邮箱地址,这里可以填符合mail格式的任意名称,真正发mail的用户不在这里设定,这个仅仅只做显示用
 12             mail.From = from;
 13 
 14             //设置邮件的收件人
 15             string address = "";
 16             string displayName = "";
 17             /*
 18              这里这样写是因为可能发给多个联系人,每个地址用 ; 号隔开
 19              一般从地址簿中直接选择联系人的时候格式都会是 :用户名1 < mail1 >; 用户名2 < mail 2>; 
 20             因此就有了下面一段逻辑不太好的代码
 21             如果永远都只需要发给一个收件人那么就简单了 mail.To.Add("收件人mail");
 22             */
 23             StringBuilder sbTo = new StringBuilder();
 24             foreach (var receiver in info.Receiver)
 25             {
 26                 sbTo.Append(receiver.Name).Append("<").Append(receiver.Email).Append(">;");
 27             }
 28             string[] mailNames = sbTo.ToString().Split(';');
 29             foreach (string name in mailNames)
 30             {
 31                 if (name != string.Empty)
 32                 {
 33                     if (name.IndexOf('<') > 0)
 34                     {
 35                         displayName = name.Substring(0, name.IndexOf('<'));
 36                         address = name.Substring(name.IndexOf('<') + 1).Replace('>', ' ');
 37                     }
 38                     else
 39                     {
 40                         displayName = string.Empty;
 41                         address = name.Substring(name.IndexOf('<') + 1).Replace('>', ' ');
 42                     }
 43                     mail.To.Add(new MailAddress(address, displayName));
 44                 }
 45             }
 46 
 47 
 48             //设置邮件的抄送收件人
 49             //这个就简单多了,如果不想快点下岗重要文件还是CC一份给领导比较好
 50             StringBuilder sbCC = new StringBuilder();
 51             foreach (var receiver in info.Receiver)
 52             {
 53                 sbTo.Append(receiver.Name).Append("<").Append(receiver.Email).Append(">;");
 54             }
 55             mailNames = sbTo.ToString().Split(';');
 56             foreach (string name in mailNames)
 57             {
 58                 if (name != string.Empty)
 59                 {
 60                     if (name.IndexOf('<') > 0)
 61                     {
 62                         displayName = name.Substring(0, name.IndexOf('<'));
 63                         address = name.Substring(name.IndexOf('<') + 1).Replace('>', ' ');
 64                     }
 65                     else
 66                     {
 67                         displayName = string.Empty;
 68                         address = name.Substring(name.IndexOf('<') + 1).Replace('>', ' ');
 69                     }
 70                     mail.CC.Add(new MailAddress(address, displayName));
 71                 }
 72             }
 73             //mail.CC.Add(new MailAddress("Manage@hotmail.com", "尊敬的领导"));
 74 
 75             //设置邮件的内容
 76             mail.Body = info.MessageText;
 77             //设置邮件的格式
 78             mail.BodyEncoding = System.Text.Encoding.UTF8;
 79             mail.IsBodyHtml = true;
 80             //设置邮件的发送级别
 81             mail.Priority = MailPriority.Normal;
 82 
 83             //设置邮件的附件,将在客户端选择的附件先上传到服务器保存一个,然后加入到mail中
 84             //string fileName = "".PostedFile.FileName.Trim();
 85             //fileName = "D:/UpFile/" + fileName.Substring(fileName.LastIndexOf("/") + 1);
 86             //txtUpFile.PostedFile.SaveAs(fileName); // 将文件保存至服务器
 87             //mail.Attachments.Add(new Attachment(fileName));
 88 
 89             mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
 90 
 91             SmtpClient client = new SmtpClient();
 92             //设置用于 SMTP 事务的主机的名称,填IP地址也可以了
 93             client.Host = "smtp.126.com";
 94             /*
 95             EmailType[Email的类型]  SMTP[Host]主机服务器  Port[端口号]  EnableSSL[是否加密]  ShiledHead[跳过垃圾箱]  
 96             Gmail                                         smtp.gmail.com                 587/ 465[不行]         True                                False  
 97             QQ/FoxMail                             smtp.qq.com                      25[默认]                      False                               False  
 98             126                                             smtp.126.com                   25[默认]                      False                                False  
 99             163                                             smtp.126.com                   25[默认]                      False                                False  
100              HotMail                                    smtp.live.com                     25[默认]                     True                                 False  
101             Sina                                            smtp.sina.com                     25[默认]                    False                                  False  
102              Tom                                           smtp.tom.com                    25[默认]                    False                                   True  
103              SoHu                                         smtp.sohu.com                  25[默认]                    False                                  False  
104              Yahoo                                       smtp.mail.yahoo.com        25[默认]                   False                                   False  
105 注释:Sina发送给QQ邮箱邮件QQ拒收! 
106             */
107 
108             //设置用于 SMTP 事务的端口,默认的是 25
109             client.Port = 25;
110             client.UseDefaultCredentials = false;
111             //这里才是真正的邮箱登陆名和密码,比如我的邮箱地址是 hbgx@hotmail, 我的用户名为 hbgx ,我的密码是 xgbh
112             client.Credentials = new System.Net.NetworkCredential("hbgx", "xgbh");
113             client.DeliveryMethod = SmtpDeliveryMethod.Network;
114             //都定义完了,正式发送了,很是简单吧!
115             try
116             {
117                 client.Send(mail);
118             }
119             catch (Exception e)
120             {
121                 return e.Message;
122             }
123 
124             return "发送成功!";
125         }
 1 public class EmailInfo
 2     {
 3         public User Sender { get; set; } //发送者
 4         public IList<User> Receiver { get; set; } //接收者
 5         public IList<User> Copyer { get; set; } //抄送给
 6         public string MessageText { get; set; } //邮件内容
 7         public string Subject { get; set; } //主题
 8     }
 9 
10     public class User
11     {
12         public string Name { get; set; }
13         public string Email { get; set; }
14     }

 

posted @ 2013-11-27 12:38  Forgive  阅读(275)  评论(0编辑  收藏  举报