C#发邮件 两种方法 实例

来源:互联网 发布:君士坦丁十一世 知乎 编辑:程序博客网 时间:2024/05/09 16:02

《本文原创,转载请标明作者和出处。》

最近要用c#做个小工具,要用到C#发邮件这个功能,顺便把代码贴上来和大家分享。

方法一: 用.net的net.mail库封装好的方法。

viewplain
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Net;  
  6. using System.Net.Mail;  
  7. using System.Net.Security;  
  8.   
  9. namespace Mail_TC01  
  10.  
  11.     class Program  
  12.      
  13.         static void Main(string[] args)  
  14.          
  15.             MailMessage myMail new MailMessage();  
  16.             myMail.From new MailAddress("huichanglee@163.com");  
  17.             myMail.To.Add(new MailAddress("li_huichang@yeah.net"));   
  18.             myMail.Subject "来自Cheers的问候"  
  19.             myMail.SubjectEncoding Encoding.UTF8;   
  20.             myMail.Body "Hi 哥们: 发个邮件测试下。"  
  21.             myMail.BodyEncoding Encoding.UTF8;   
  22.             myMail.IsBodyHtml false  
  23.             myMail.Priority MailPriority.High;  
  24.             myMail.CC.Add(new MailAddress("252827972@qq.com"));  
  25.             myMail.Bcc.Add(new MailAddress("huichanglee@126.com"));  //smtp client     
  26.             SmtpClient sender new SmtpClient("smtp.163.com");  
  27.             sender.UseDefaultCredentials false 
  28.             sender.Credentials new NetworkCredential("huichanglee@163.com""******");    
  29.             sender.DeliveryMethod SmtpDeliveryMethod.Network;     
  30.             sender.EnableSsl true 
  31.             try    
  32.                 
  33.                 sender.Send(myMail);    
  34.                 Console.WriteLine("Success");   
  35.                 
  36.             catch (InvalidOperationExceptioe)    
  37.                 
  38.                 Console.WriteLine("Failed.Exception:{0}"e.Message);     
  39.               Console.Write("Press any key to quit...");    
  40.             Console.ReadKey();     
  41.          
  42.      
  43.  


备注: 由于微软.netframework有个bug(见:http://hi.baidu.com/shuwang/blog/item/f463db1bb4c789d2ad6e75dc.html),推荐使用下边方法。


方法二: .net 结合 jmail发邮件

前提条件: 必须安装jmail组件(免费的网上随便都能下到,现在版本为4.5)

viewplain
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using jmail;  
  6.   
  7. namespace Jmail_TC01  
  8.  
  9.     class Program  
  10.      
  11.         public static bool SendMail(string from, string to, string subject, string body)  
  12.          
  13.             jmail.Message new Message();  
  14.             m.Charset "gb2312" 
  15.             m.From from;  
  16.             m.Subject subject;  
  17.             m.AddRecipient(to, nullnull);  
  18.             m.MailServerUserName "huichanglee@163.com"   //此处为邮箱账户  
  19.             #region password  
  20.             m.MailServerPassWord "******"  //此处为邮箱密码  
  21.             #endregion  
  22.             m.ContentType "text/html" 
  23.             m.Body body;  
  24.             m.Send("smtp.163.com"false);  
  25.             return true 
  26.          
  27.         static void Main(string[] args)  
  28.          
  29.             if (SendMail("huichanglee@163.com""huichanglee@126.com""Hi 帮我在明天把书还了""Hi,Cheers:明天下午帮我把书还了,谢谢!~"))    //调用发邮件方法。  
  30.              
  31.                  Console.WriteLine("Send mail pass!");  
  32.              
  33.             else  
  34.              
  35.                 Console.WriteLine("Send mail fail!");  
  36.              
  37.             Console.ReadKey();  
  38.          
  39.      
  40.  


两种方法各有优劣,大家根据实际情况选择吧!呵呵~~