收藏 分销(赏)

C#操作源码email.doc

上传人:仙人****88 文档编号:9447954 上传时间:2025-03-26 格式:DOC 页数:45 大小:151KB 下载积分:10 金币
下载 相关 举报
C#操作源码email.doc_第1页
第1页 / 共45页
C#操作源码email.doc_第2页
第2页 / 共45页


点击查看更多>>
资源描述
C#发送Email邮件方法总结 通过.Net FrameWork 2.0下提供的“System.Net.Mail”可以轻松的实现,本文列举了3种途径来发送:   1.通过Localhost;   2.通过普通SMTP;   3.通过SSL的SMTP;      下面一个一个来说:      1.通过LocalHost         1public void SendMailLocalhost()   2 ...{   3 System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();   4 msg.To.Add("a@");   5 msg.To.Add("b@");   6 /**//*   7 * msg.To.Add("b@");   8 * msg.To.Add("b@");   9 * msg.To.Add("b@");可以发送给多人   10 */   11 msg.CC.Add("c@");   12 /**//*   13 * msg.CC.Add("c@");   14 * msg.CC.Add("c@");可以抄送给多人   15 */   16 msg.From = new MailAddress("a@", "AlphaWu", System.Text.Encoding.UTF8);   17 /**//* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/   18 msg.Subject = "这是测试邮件";//邮件标题   19 msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码   20 msg.Body = "邮件内容";//邮件内容   21 msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码   22 msg.IsBodyHTML = false;//是否是HTML邮件   23 msg.Priority = MailPriority.High;//邮件优先级   24   25 SmtpClient client = new SmtpClient();   26 client.Host = "localhost";   27 object userState = msg;   28 try   29 ...{   30 client.SendAsync(msg, userState);   31 //简单一点儿可以client.Send(msg);   32 MessageBox.Show("发送成功");   33 }   34 catch (System.Net.Mail.SmtpException ex)   35 ...{   36 MessageBox.Show(ex.Message, "发送邮件出错");   37 }   38 }   39         2.通过普通SMTP         1public void SendMailUseZj()   2 ...{   3 System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();   4 msg.To.Add("a@");   5 msg.To.Add("b@");   6 /**//*   7 * msg.To.Add("b@");   8 * msg.To.Add("b@");   9 * msg.To.Add("b@");可以发送给多人   10 */   11 msg.CC.Add("c@");   12 /**//*   13 * msg.CC.Add("c@");   14 * msg.CC.Add("c@");可以抄送给多人   15 */   16 msg.From = new MailAddress("a@", "AlphaWu", System.Text.Encoding.UTF8);   17 /**//* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/   18 msg.Subject = "这是测试邮件";//邮件标题   19 msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码   20 msg.Body = "邮件内容";//邮件内容   21 msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码   22 msg.IsBodyHtml = false;//是否是HTML邮件   23 msg.Priority = MailPriority.High;//邮件优先级   24   25 SmtpClient client = new SmtpClient();   26 client.Credentials = new System.Net.NetworkCredential("username@", "userpass");   27 //在注册的邮箱和密码   28 client.Host = "";   29 object userState = msg;   30 try   31 ...{   32 client.SendAsync(msg, userState);   33 //简单一点儿可以client.Send(msg);   34 MessageBox.Show("发送成功");   35 }   36 catch (System.Net.Mail.SmtpException ex)   37 ...{   38 MessageBox.Show(ex.Message, "发送邮件出错");   39 }   40 }   41         上述方法不适用于所有SMTP,经测试可以,而不行         3.通过SSL的SMTP         1public void SendMailUseGmail()   2 ...{   3 System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();   4 msg.To.Add("a@");   5 msg.To.Add("b@");   6 /**//*   7 * msg.To.Add("b@");   8 * msg.To.Add("b@");   9 * msg.To.Add("b@");可以发送给多人   10 */   11 msg.CC.Add("c@");   12 /**//*   13 * msg.CC.Add("c@");   14 * msg.CC.Add("c@");可以抄送给多人   15 */   16 msg.From = new MailAddress("a@", "AlphaWu", System.Text.Encoding.UTF8);   17 /**//* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/   18 msg.Subject = "这是测试邮件";//邮件标题   19 msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码   20 msg.Body = "邮件内容";//邮件内容   21 msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码   22 msg.IsBodyHtml = false;//是否是HTML邮件   23 msg.Priority = MailPriority.High;//邮件优先级   24   25 SmtpClient client = new SmtpClient();   26 client.Credentials = new System.Net.NetworkCredential("username@", "password");   27 //上述写你的GMail邮箱和密码   28 client.Port = 587;//Gmail使用的端口   29 client.Host = "";   30 client.EnableSsl = true;//经过ssl加密   31 object userState = msg;   32 try   33 ...{   34 client.SendAsync(msg, userState);   35 //简单一点儿可以client.Send(msg);   36 MessageBox.Show("发送成功");   37 }   38 catch (System.Net.Mail.SmtpException ex)   39 ...{   40 MessageBox.Show(ex.Message, "发送邮件出错");   41 }   42 }   43   通过Gmail来发送邮件,成功率极高,几乎都可以发到,推荐使用 C#发送Email邮件三种方法的总结 通过.Net FrameWork 2.0下提供的“System.Net.Mail”可以轻松的实现,本文列举了3种途径来发送: 1.通过Localhost; 2.通过普通SMTP; 3.通过SSL的SMTP; 下面一个一个来说: 1.通过LocalHost public void SendMailLocalhost()  {  System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();  msg.To.Add("a@");  msg.To.Add("b@");  /* msg.To.Add("b@");  * msg.To.Add("b@");  * msg.To.Add("b@");可以发送给多人  */  msg.CC.Add(c@);  /*  * msg.CC.Add("c@");  * msg.CC.Add("c@");可以抄送给多人  */  msg.From = new MailAddress("a@", "AlphaWu", System.Text.Encoding.UTF8);  /* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/  msg.Subject = "这是测试邮件";//邮件标题  msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码  msg.Body = "邮件内容";//邮件内容  msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码  msg.IsBodyHtml = false;//是否是HTML邮件  msg.Priority = MailPriority.High;//邮件优先级    SmtpClient client = new SmtpClient();  client.Host = "localhost";  object userState = msg;  try {  client.SendAsync(msg, userState);  //简单一点儿可以client.Send(msg);  MessageBox.Show("发送成功");  }  catch (System.Net.Mail.SmtpException ex) {  MessageBox.Show(ex.Message, "发送邮件出错");  } } 2.通过普通SMTP public void SendMailUseZj() { System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(); msg.To.Add(a@); msg.To.Add(b@); /* * msg.To.Add("b@"); * msg.To.Add("b@"); * msg.To.Add("b@");可以发送给多人 */  msg.CC.Add("c@"); /* * msg.CC.Add("c@"); * msg.CC.Add("c@");可以抄送给多人 */ msg.From = new MailAddress("a@", "AlphaWu", System.Text.Encoding.UTF8); /* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/ msg.Subject = "这是测试邮件";//邮件标题 msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码 msg.Body = "邮件内容";//邮件内容 msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码 msg.IsBodyHtml = false;//是否是HTML邮件 msg.Priority = MailPriority.High;//邮件优先级 SmtpClient client = new SmtpClient(); client.Credentials = new System.Net.NetworkCredential("username@", "userpass"); //在注册的邮箱和密码 client.Host = ""; object userState = msg; try  { client.SendAsync(msg, userState); //简单一点儿可以client.Send(msg); MessageBox.Show("发送成功"); } catch (System.Net.Mail.SmtpException ex)  { MessageBox.Show(ex.Message, "发送邮件出错"); } } 上述方法不适用于所有SMTP,经测试可以,而不行 3.通过SSL的SMTP public void SendMailUseGmail() { System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(); msg.To.Add(a@); msg.To.Add(b@);  /*  * msg.To.Add("b@"); * msg.To.Add("b@"); * msg.To.Add("b@");可以发送给多人  */ msg.CC.Add(c@); /*  * msg.CC.Add("c@");  * msg.CC.Add("c@");可以抄送给多人 */ msg.From = new MailAddress("a@", "AlphaWu", System.Text.Encoding.UTF8); /* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/ msg.Subject = "这是测试邮件";//邮件标题 msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码 msg.Body = "邮件内容";//邮件内容 msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码 msg.IsBodyHtml = false;//是否是HTML邮件 msg.Priority = MailPriority.High;//邮件优先级 SmtpClient client = new SmtpClient(); client.Credentials = new System.Net.NetworkCredential("username@", "password"); //上述写你的GMail邮箱和密码 client.Port = 587;//Gmail使用的端口 client.Host = ""; client.EnableSsl = true;//经过ssl加密 object userState = msg; try  {  client.SendAsync(msg, userState); //简单一点儿可以client.Send(msg); MessageBox.Show("发送成功"); } catch (System.Net.Mail.SmtpException ex) { MessageBox.Show(ex.Message, "发送邮件出错"); } } 通过Gmail来发送邮件,成功率极高,几乎都可以发到,推荐使用。 c# email 发送|c# email 接收 SMTP 1.添加 using System.Web.Mail;引用 2.Mail 发送: private System.Web.Mail.MailMessage m_Mail=new MailMessage(); m_Mail.From="admin@"; //m_Mail.To="flashcjy@" msg.To.Add("flashcjy@"); msg.To.Add("flashcjy@"); m_Mail.Subject="发送Email测试"; m_Mail.BodyFormat=MailFormat.Html; m_Mail.Body=" SmtpMail.Send(m_Mail); txtMsg.Text="发送成功"; 3.Mail接收 using System; using System.Net.Sockets; using System.Net; using System.Security.Cryptography; using System.IO;                            /////////////////////////////////////////////                            // 类名:Pop3         //                            // 功能:接收电子邮件          //                            ///////////////////////////////////////////// namespace ZTSX.Email {  /// <summary>  /// Pop3 的摘要说明。  /// </summary>  public class Pop3  {   private string mstrHost     = null;  //主机名称或IP地址   private int mintPort     = 110;  //主机的端口号(默认为110)   private TcpClient mtcpClient   = null;  //客户端   private NetworkStream mnetStream  = null;  //网络基础数据流   private StreamReader m_stmReader  = null;  //读取字节流   private string mstrStatMessage   = null;  //执行STAT命令后得到的消息(从中得到邮件数)   /// <summary>   /// 构造函数   /// </summary>   /// <remarks>一个邮件接收对象</remarks>   public Pop3()   {   }   /// <summary>   /// 构造函数   /// </summary>   /// <param name="host">主机名称或IP地址</param>   public Pop3(string host)   {    mstrHost = host;   }   /// <summary>   /// 构造函数   /// </summary>   /// <param name="host">主机名称或IP地址</param>   /// <param name="port">主机的端口号</param>   /// <remarks>一个邮件接收对象</remarks>   public Pop3(string host,int port)   {    mstrHost = host;    mintPort = port;   }   #region 属性   /// <summary>   /// 主机名称或IP地址   /// </summary>   /// <remarks>主机名称或IP地址</remarks>   public string HostName   {    get{return mstrHost;}    set{mstrHost = value;}   }   /// <summary>   /// 主机的端口号   /// </summary>   /// <remarks>主机的端口号</remarks>   public int Port   {    get{return mintPort;}    set{mintPort = value;}   }   #endregion   #region 私有方法   /// <summary>   /// 向网络访问的基础数据流中写数据(发送命令码)   /// </summary>   /// <param name="netStream">可以用于网络访问的基础数据流</param>   /// <param name="command">命令行</param>   /// <remarks>向网络访问的基础数据流中写数据(发送命令码)</remarks>   private void WriteToNetStream(ref NetworkStream netStream,String command)   {    string strToSend = command + "\r\n";    byte[] arrayToSend = System.Text.Encoding.ASCII.GetBytes(strToSend.ToCharArray());       netStream.Write(arrayToSend,0,arrayToSend.Length);   }   /// <summary>   /// 检查命令行结果是否正确   /// </summary>   /// <param name="message">命令行的执行结果</param>   /// <param name="check">正确标志</param>   /// <returns>   /// 类型:布尔   /// 内容:true表示没有错误,false为有错误   /// </returns>   /// <remarks>检查命令行结果是否有错误</remarks>   private bool CheckCorrect(string message,string check)   {    if(message.IndexOf(check) == -1)     return false;    else     return true;   }   /// <summary>   /// 邮箱中的未读邮件数   /// </summary>   /// <param name="message">执行完LIST命令后的结果</param>   /// <returns>   /// 类型:整型   /// 内容:邮箱中的未读邮件数   /// </returns>   /// <remarks>邮箱中的未读邮件数</remarks>   private int GetMailNumber(string message)   {    string[] strMessage = message.Split(' ');    return Int32.Parse(strMessage[1]);   }   /// <summary>   /// 得到经过解码后的邮件的内容   /// </summary>   /// <param name="encodingContent">解码前的邮件的内容</param>   /// <returns>   /// 类型:字符串   /// 内容:解码后的邮件的内容   /// </returns>   /// <remarks>得到解码后的邮件的内容</remarks>   private string GetDecodeMailContent(string encodingContent)   {    string strContent = encodingContent.Trim();    string strEncode = null;    int iStart = strContent.IndexOf("Base64");    if(iStart == -1)     throw new Pop3Exception("邮件内容不是Base64编码,请检查");    else    {     strEncode = strContent.Substring(iStart + 6,strContent.Length - iStart - 6);     try     {      return SX.Encode.TransformToString(strEncode);     }     catch(SX.EncodeException exc)     {      throw new Pop3Exception(exc.Message);     }    }   }   #endregion   /// <summary>   /// 与主机建立连接   /// </summary>   /// <returns>   /// 类型:布尔   /// 内容:连接结果(true为连接成功,false为连接失败)   /// </returns>   /// <remarks>与主机建立连接</remarks>   public bool Connect()   {    if(mstrHost == null)     throw new Exception("请提供SMTP主机名称或IP地址!");    if(mintPort == 0)     throw new Exception("请提供SMTP主机的端口号");    try    {     mtcpClient = new TcpClient(mstrHost,mintPort);     mnetStream = mtcpClient.GetStream();     m_stmReader = new StreamReader(mtcpClient.GetStream());     string strMessage = m_stmReader.ReadLine();     if(CheckCorrect(strMessage,"+OK") == true)      return true;     else      return false;    }    catch(SocketException exc)    {     throw new Pop3Exception(exc.ToString());    }    catch(NullReferenceException exc)    {     throw new Pop3Exception(exc.ToString());    }   }   #region Pop3命令   /// <summary>   /// 执行Pop3命令,并检查执行的结果   /// </summary>   /// <param name="command">Pop3命令行</param>   /// <returns>   /// 类型:字符串   /// 内容:Pop3命令的执行结果   /// </returns>   private string ExecuteCommand(string command)   {    string strMessage = null;  //执行Pop3命令后返回的消息    try    {     //发送命令     WriteToNetStream(ref mnetStream,command);     //读取多行     if(command.Substring(0,4).Equals("LIST") || command.Substring(0,4).Equals("RETR") || command.Substring(0,4).Equals("UIDL")) //记录STAT后的消息(其中包含邮件数)     {      strMessage = ReadMultiLine();      if(command.Equals("LIST")) //记录LIST后的消息(其中包含邮件数)       mstrStatMessage = strMessage;     }      //读取单行     else      strMessage = m_stmReader.ReadLine();     //判断执行结果是否正确     if(CheckCorrect(strMessage,"+OK"))      return strMessage;     else      return "Error";    }    catch(IOException exc)    {     throw new Pop3Exception(exc.ToString());    }   }   /// <summary>   /// 在Pop3命令中,LIST、RETR和UIDL命令的结果要返回多行,以点号(.)结尾,   /// 所以如果想得到正确的结果,必须读取多行   /// </summary>   /// <returns>   /// 类型:字符串   /// 内容:执行Pop3命令后的结果   /// </returns>   private string ReadMultiLine()   {    string strMessage = m_stmReader.ReadLine();    string strTemp = null;    while(strMessage != ".")    {     strTemp = strTemp + strMessage;     strMessage = m_stmReader.ReadLine();    }    return strTemp;   }   //USER命令   private string USER(string user)   {    return ExecuteCommand("USER " + user) + "\r\n";   }   //PASS命令   private string PASS(string password)   {    return ExecuteCommand("PASS " + password) + "\r\n";   }   //LIST命令   private string LIST()   {    return ExecuteCommand("LIST") + "\r\n";   }   //UIDL命令   private string UIDL()   {    return ExecuteCommand("UIDL") + "\r\n";   }   //NOOP命令   private string NOOP()   {    return ExecuteCommand("NOOP") + "\r\n";   }   //STAT命令   private string STAT()   {    return ExecuteCommand("STAT") + "\r\n";   }   //RETR命令   private string RETR(int number)  
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服