VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • C#教程之C#发送邮箱

   之前自己从来没有做过发送邮箱的功能,前段时间项目需要,在找了很多帖子之后,终于实现了。

  之后有整理了一下,写了一个类。直接给类传递信息,就可以发送了。

  这里还需要说明的是,发送邮箱需要开通POP3/SMTP服务,否则QQ邮箱,网易邮箱等会报错。接收的邮箱就不用开通啦,开通方法百度一下就知道啦。

复制代码
  1 public static class EmailHelper
  2     {
  3         /// <summary>
  4         /// 发送邮件
  5         /// </summary>
  6         /// <param name="subject">邮件主题</param>
  7         /// <param name="msg">邮件内容</param>
  8         /// <param name="filePath">附件地址,如果不添加附件传null或""</param>
  9         /// <param name="senderEmail">发送人邮箱地址</param>
 10         /// <param name="senderPwd">发送人邮箱密码</param>
 11         /// <param name="recipientEmail">接收人邮箱</param>
 12         public static void SendMail(string subject, string msg, string filePath, string senderEmail, string senderPwd, params string[] recipientEmail)
 13         {
 14             if (!CheckIsNotEmptyOrNull(subject, msg, senderEmail, senderPwd) || recipientEmail == null || recipientEmail.Length == 0)
 15             {
 16                 throw new Exception("输入信息无效");
 17             }
 18             try
 19             {
 20                 string[] sendFromUser = senderEmail.Split('@');
 21 
 22                 //构造一个Email的Message对象
 23                 MailMessage message = new MailMessage();
 24 
 25                 //确定smtp服务器地址。实例化一个Smtp客户端
 26                 System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("smtp." + sendFromUser[1]);
 27 
 28                 //构造发件人地址对象
 29                 message.From = new MailAddress(senderEmail, sendFromUser[0], Encoding.UTF8);
 30 
 31                 //构造收件人地址对象
 32                 foreach (string userName in recipientEmail)
 33                 {
 34                     message.To.Add(new MailAddress(userName, userName.Split('@')[0], Encoding.UTF8));
 35                 }
 36 
 37                 if (!string.IsNullOrEmpty(filePath))
 38                 {
 39                     Attachment attach = new Attachment(filePath);
 40                     //得到文件的信息
 41                     ContentDisposition disposition = attach.ContentDisposition;
 42                     disposition.CreationDate = System.IO.File.GetCreationTime(filePath);
 43                     disposition.ModificationDate = System.IO.File.GetLastWriteTime(filePath);
 44                     disposition.ReadDate = System.IO.File.GetLastAccessTime(filePath);
 45                     //向邮件添加附件
 46                     message.Attachments.Add(attach);
 47                 }
 48 
 49                 //添加邮件主题和内容
 50                 message.Subject = subject;
 51                 message.SubjectEncoding = Encoding.UTF8;
 52                 message.Body = msg;
 53                 message.BodyEncoding = Encoding.UTF8;
 54 
 55                 //设置邮件的信息
 56                 client.DeliveryMethod = SmtpDeliveryMethod.Network;
 57                 message.BodyEncoding = System.Text.Encoding.UTF8;
 58                 message.IsBodyHtml = false;
 59 
 60                 //如果服务器支持安全连接,则将安全连接设为true。
 61                 //gmail,qq支持,163不支持
 62                 switch (sendFromUser[1])
 63                 {
 64                     case "gmail.com":
 65                     case "qq.com":
 66                         client.EnableSsl = true;
 67                         break;
 68                     default:
 69                         client.EnableSsl = false;
 70                         break;
 71                 }
 72 
 73                 //设置用户名和密码。
 74                 client.UseDefaultCredentials = false;
 75                 //用户登陆信息
 76                 NetworkCredential myCredentials = new NetworkCredential(senderEmail, senderPwd);
 77                 client.Credentials = myCredentials;
 78                 //发送邮件
 79                 client.Send(message);
 80             }
 81             catch (Exception ex)
 82             {
 83                 throw (ex);
 84             }
 85         }
 86 
 87         /// <summary>
 88         /// 验证所有传入字符串不能为空或null
 89         /// </summary>
 90         /// <param name="ps">参数列表</param>
 91         /// <returns>都不为空或null返回true,否则返回false</returns>
 92         public static bool CheckIsNotEmptyOrNull(params string[] ps)
 93         {
 94             if (ps != null)
 95             {
 96                 foreach (string item in ps)
 97                 {
 98                     if (string.IsNullOrEmpty(item)) return false;
 99                 }
100                 return true;
101             }
102             return false;
103         }
104     }
复制代码

 

,直接调用方法,传递需要发送的信息,就可以发送邮箱了。


相关教程