




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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(); 5 msg.To.Add(); 6 /*/* 7 * msg.To.Add(); 8 * msg.To.Add(); 9 * msg.To.Add();可以发送给多人 10 */ 11 msg.CC.Add(); 12 /*/* 13 * msg.CC.Add(); 14 * msg.CC.Add();可以抄送给多人 15 */ 16 msg.From = new MailAddress(, 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(); 5 msg.To.Add(); 6 /*/* 7 * msg.To.Add(); 8 * msg.To.Add(); 9 * msg.To.Add();可以发送给多人 10 */ 11 msg.CC.Add(); 12 /*/* 13 * msg.CC.Add(); 14 * msg.CC.Add();可以抄送给多人 15 */ 16 msg.From = new MailAddress(, 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(, 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(); 5 msg.To.Add(); 6 /*/* 7 * msg.To.Add(); 8 * msg.To.Add(); 9 * msg.To.Add();可以发送给多人 10 */ 11 msg.CC.Add(); 12 /*/* 13 * msg.CC.Add(); 14 * msg.CC.Add();可以抄送给多人 15 */ 16 msg.From = new MailAddress(, 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(, 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.通过LocalHostpublic void SendMailLocalhost()System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();msg.To.Add();msg.To.Add();/* msg.To.Add();* msg.To.Add();* msg.To.Add();可以发送给多人*/msg.CC.Add();/* msg.CC.Add();* msg.CC.Add();可以抄送给多人*/msg.From = new MailAddress(, 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.通过普通SMTPpublic void SendMailUseZj() System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(); msg.To.Add(); msg.To.Add(); /* * msg.To.Add(); * msg.To.Add(); * msg.To.Add();可以发送给多人 */msg.CC.Add(); /* * msg.CC.Add(); * msg.CC.Add();可以抄送给多人 */ msg.From = new MailAddress(, 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(, 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的SMTPpublic void SendMailUseGmail() System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(); msg.To.Add(); msg.To.Add();/* msg.To.Add(); * msg.To.Add(); * msg.To.Add();可以发送给多人*/ msg.CC.Add(); /* msg.CC.Add();* msg.CC.Add();可以抄送给多人 */ msg.From = new MailAddress(, 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(, password); /上述写你的GMail邮箱和密码 client.Port = 587;/Gmail使用的端口 client.Host = ; client.EnableSsl = true;/经过ssl加密 object userState = msg; tryclient.SendAsync(msg, userState); /简单一点儿可以client.Send(msg); MessageBox.Show(发送成功); catch (System.Net.Mail.SmtpException ex) MessageBox.Show(ex.Message, 发送邮件出错); 通过Gmail来发送邮件,成功率极高,几乎都可以发到,推荐使用。c# email 发送|c# email 接收SMTP1.添加 using System.Web.Mail;引用2.Mail 发送:private System.Web.Mail.MailMessage m_Mail=new MailMessage(); m_Mail.From=;/m_Mail.To=msg.To.Add(); msg.To.Add(); 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/ / Pop3 的摘要说明。/ public class Pop3private 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命令后得到的消息(从中得到邮件数)/ / 构造函数/ / 一个邮件接收对象public Pop3()/ / 构造函数/ / 主机名称或IP地址public Pop3(string host)mstrHost = host;/ / 构造函数/ / 主机名称或IP地址/ 主机的端口号/ 一个邮件接收对象public Pop3(string host,int port)mstrHost = host;mintPort = port;#region属性/ / 主机名称或IP地址/ / 主机名称或IP地址public string HostNamegetreturn mstrHost;setmstrHost = value;/ / 主机的端口号/ / 主机的端口号public int Portgetreturn mintPort;setmintPort = value;#endregion#region 私有方法/ / 向网络访问的基础数据流中写数据(发送命令码)/ / 可以用于网络访问的基础数据流/ 命令行/ 向网络访问的基础数据流中写数据(发送命令码)private void WriteToNetStream(ref NetworkStream netStream,String command)string strToSend = command + rn;byte arrayToSend = System.Text.Encoding.ASCII.GetBytes(strToSend.ToCharArray(); netStream.Write(arrayToSend,0,arrayToSend.Length);/ / 检查命令行结果是否正确/ / 命令行的执行结果/ 正确标志/ / 类型:布尔/ 内容:true表示没有错误,false为有错误/ / 检查命令行结果是否有错误private bool CheckCorrect(string message,string check)if(message.IndexOf(check) = -1)return false;elsereturn true;/ / 邮箱中的未读邮件数/ / 执行完LIST命令后的结果/ / 类型:整型/ 内容:邮箱中的未读邮件数/ / 邮箱中的未读邮件数private int GetMailNumber(string message)string strMessage = message.Split( );return Int32.Parse(strMessage1);/ / 得到经过解码后的邮件的内容/ / 解码前的邮件的内容/ / 类型:字符串/ 内容:解码后的邮件的内容/ / 得到解码后的邮件的内容private string GetDecodeMailContent(string encodingContent)string strContent = encodingContent.Trim();string strEncode = null;int iStart = strContent.IndexOf(Base64);if(iStart = -1)throw new Pop3Exception(邮件内容不是Base64编码,请检查);elsestrEncode = strContent.Substring(iStart + 6,strContent.Length - iStart - 6);tryreturn SX.Encode.TransformToString(strEncode);catch(SX.EncodeException exc)throw new Pop3Exception(exc.Message);#endregion/ / 与主机建立连接/ / / 类型:布尔/ 内容:连接结果(true为连接成功,false为连接失败)/ / 与主机建立连接public bool Connect()if(mstrHost = null)throw new Exception(请提供SMTP主机名称或IP地址!);if(mintPort = 0)throw new Exception(请提供SMTP主机的端口号);trymtcpClient = 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;elsereturn false;catch(SocketException exc)throw new Pop3Exception(exc.ToString();catch(NullReferenceException exc)throw new Pop3Exception(exc.ToString();#region Pop3命令/ / 执行Pop3命令,并检查执行的结果/ / Pop3命令行/ / 类型:字符串/ 内容:Pop3命令的执行结果/ 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;/读取单行elsestrMessage = m_stmReader.ReadLine();/判断执行结果是否正确if(CheckCorrect(strMessage,+OK)return strMessage;elsereturn Error;catch(IOException exc)throw new Pop3Exception(exc.ToString();/ / 在Pop3命令中,LIST、RETR和UIDL命令的结果要返回多行,以点号(.)结尾,/ 所以如果想得到正确的结果,必须读取多行/ / / 类型:字符串/ 内容:执行Pop3命令后的结果/ 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) + rn;/PASS命令private string PASS(string password)return ExecuteCommand(PASS + password) + rn;/LIST命令private string LIST()return ExecuteCommand(LIST) + rn;/UIDL命令private string UIDL()return ExecuteCommand(UIDL) + rn;/NOOP命令private string NOOP()return ExecuteCommand(NOOP) + rn;/STAT命令private string STAT()return ExecuteCommand(STAT) + rn;/RETR命令private string RETR(int number)return ExecuteCommand(RETR + number.ToString() + rn;/DELE命令private string DELE(int number)return ExecuteCommand(DELE + number.ToString() + rn;/QUIT命令private void Quit()WriteToNetStream(ref mnetStream,QUIT);/ / 收取邮件/ / 用户名/ 口令/ / 类型:字符串数组/ 内容:解码前的邮件内容/ private string ReceiveMail(string user,string password)int iMailNumber = 0;/邮件数if(USER(user).Equals(Error)throw new Pop3Exception(用户名不正确!);if(PASS(password).Equals(Error)throw new Pop3Exception(用户口令不正确!);if(STAT().Equals(Error)throw new Pop3Exception(准备接收邮件时发生错误!);if(LIST().Equals(Error)throw new Pop3Exception(得到邮件列表时发生错误!);tryiMailNumber = GetMailNumber(mstrStatMessage);/没有新邮件if(iMailNumber = 0)return null;elsestring strMailContent = new stringiMailNumber;for(int i = 1 ; i = iMailNumber ; i+)/读取邮件内容strMailContenti - 1 = GetDecodeMailContent(RETR(i);return strMailContent;catch(Pop3Exception exc)throw new Pop3Exception(exc.ToString();#endregion/ / 收取邮件 / / 用户名/ 口令/ / 类型:字符串数组/ 内容:解码前的邮件内容/ /收取邮箱中的未读邮件public string Receive(string user,string password)tryreturn ReceiveMail(user,password);catch(Pop3Exception exc)throw new Pop3Exception(exc.ToString();/ / 断开所有与服务器的会话/ / 断开所有与服务器的会话public void DisConnect()tryQuit();if(m_stmReader != null)m_stmReader.Close();if(mnetStream != null)mnetStream.Close();if(mtcpClient != null)mtcpClient.Close();catch(SocketException exc)throw new Pop3Exception(exc.ToString();/ / 删除邮件/ / 邮件号public void DeleteMail(int number)/删除邮件int iMailNumber = number + 1;if(DELE(iMailNumber).Equals(Error)throw new Pop3Exception(删除第 + iMailNumber.ToString() + 时出现错误!);下面给出一个开源的EMail类,VB写的,实现了Email的接收和发送:下载c# 发送email,正文支持html格式,包含附件string v_smtpAddress =;/smtp地址,如 2 string v_sendMailUserName = userName;/发送邮件使用的用户名 3 string v_sendMailPassword = userPwd;/发送邮件使用的密码 4 string v_sendMailAddress =;/发送邮件的mail地址 5 string v_receiveMailAddress =;/接收邮件的mail地址 6 stri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑协议书汇编15篇
- 1+X幼儿照护(初级)知到智慧树答案
- 《红楼梦》“三书”浅说知到智慧树答案
- 《创新创业过程与方法》知到智慧树答案
- 零售行业变革与挑战
- (高级)审计理论与实务知到智慧树答案
- 机电设备抗震加固与设计方案
- 供水管网工程施工人员培训方案
- 燃气项目施工临时设施方案
- 水稻小麦课件
- 厨房消防安全培训
- 小陈 税务风险应对常见指标与答复思路
- 2025年《中华人民共和国档案法》知识培训试题及答案
- 2026年高考政治一轮复习:必修2《经济与社会》知识点背诵提纲
- 2025至2030年中国建筑膜行业市场调查研究及发展趋势预测报告
- 2025年急诊急救试题(附答案)
- 2025年北京市中考语文试卷(含答案与解析)
- (正式版)HGT 22820-2024 化工安全仪表系统工程设计规范
- 实验报告-探究杠杆的平衡条件
- 第3章access2010查询操作-上传
- 钳工手工制作六角螺母详细
评论
0/150
提交评论