1、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.MailMes
2、sage(); 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 Mail
3、Address("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
4、 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);
5、 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
6、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 ms
7、g.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.UTF
8、8;//邮件内容编码 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 us
9、erState = 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 上
10、述方法不适用于所有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@");
11、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 = "这是测
12、试邮件";//邮件标题 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 Smt
13、pClient(); 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.SendA
14、sync(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 Fram
15、eWork 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@"); * ms
16、g.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 = Sys
17、tem.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
18、 { 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.Mai
19、lMessage(); 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个参数分别是
20、发件人地址(可以随便写),发件人姓名,编码*/ 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
21、 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.SmtpExc
22、eption 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@"); *
23、 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.U
24、TF8;//邮件标题编码 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");
25、//上述写你的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.S
26、how(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("fla
27、shcjy@"); 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; /////////
28、////////////////////////////////////
// 类名:Pop3 //
// 功能:接收电子邮件 //
/////////////////////////////////////////////
namespace ZTSX.Email
{
///
29、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 mst
30、rStatMessage = null; //执行STAT命令后得到的消息(从中得到邮件数)
///
31、st;
}
///
32、// 主机名称或IP地址
///
///
33、Port = value;}
}
#endregion
#region 私有方法
///
34、orkStream netStream,String command)
{
string strToSend = command + "\r\n";
byte[] arrayToSend = System.Text.Encoding.ASCII.GetBytes(strToSend.ToCharArray());
netStream.Write(arrayToSend,0,arrayToSend.Length);
}
///
35、name="message">命令行的执行结果
/// 正确标志
///
36、n false;
else
return true;
}
///
37、 string[] strMessage = message.Split(' ');
return Int32.Parse(strMessage[1]);
}
/// 38、arks>
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 39、 = strContent.Substring(iStart + 6,strContent.Length - iStart - 6);
try
{
return SX.Encode.TransformToString(strEncode);
}
catch(SX.EncodeException exc)
{
throw new Pop3Exception(exc.Message);
}
}
}
#endregion
/// 40、
/// 41、 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
r 42、eturn false;
}
catch(SocketException exc)
{
throw new Pop3Exception(exc.ToString());
}
catch(NullReferenceException exc)
{
throw new Pop3Exception(exc.ToString());
}
}
#region Pop3命令
/// 43、 name="command">Pop3命令行
/// 44、mmand.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;
}
//读取单行
45、 else
strMessage = m_stmReader.ReadLine();
//判断执行结果是否正确
if(CheckCorrect(strMessage,"+OK"))
return strMessage;
else
return "Error";
}
catch(IOException exc)
{
throw new Pop3Exception(exc.ToString());
}
}
/// 46、TR和UIDL命令的结果要返回多行,以点号(.)结尾,
/// 所以如果想得到正确的结果,必须读取多行
///
/// 47、trTemp = 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("PA 48、SS " + 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)






