zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    好的软件架构设计(转)
    利用ManualResetEvent来来控制异步调用的打印的线程的暂停和恢复(转)
    Lucene.Net+盘古分词器(详细介绍)(转)
    如何让 height:100%; 起作用---父级元素必须设定高度
    前端问题汇总
    JS基础_强制类型转换-Number
    CSS实现垂直居中的常用方法
    vue项目上线步骤
    一篇文章全面了解运维监控知识体系
    vue+axios 前端实现登录拦截(路由拦截、http拦截)
  • 原文地址:https://www.cnblogs.com/forgive/p/3445377.html
Copyright © 2011-2022 走看看