[C#]send Email

由於專題的系統要以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@a.com ");
msg.To.Add(" b@b.com ");
/*
* msg.To.Add("b@b.com");
* msg.To.Add("b@b.com");
* msg.To.Add("b@b.com");可以發送給多人
*/
msg.CC.Add(" c@c.com ");
/*
* msg.CC.Add("c@c.com");
* msg.CC.Add("c@c.com");可以抄送給多人
*/
msg.From = new MailAddress(" a@a.com ", " 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@a.com ");
msg.To.Add(" b@b.com ");
/*
* msg.To.Add("b@b.com");
* msg.To.Add("b@b.com");
* msg.To.Add("b@b.com");可以發送給多人
*/
msg.CC.Add(" c@c.com ");
/*
* msg.CC.Add("c@c.com");
* msg.CC.Add("c@c.com");可以抄送給多人
*/
msg.From = new MailAddress(" a@a.com ", " 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@zj.com ", " userpass ");
//在zj.com註冊的郵箱和密碼
client.Host = " smtp.zj.com ";
object userState = msg;
try
{
client.SendAsync(msg, userState);
//簡單一點兒可以client.Send(msg);
MessageBox.Show(" 發送成功 ");
}
catch (System.Net.Mail.SmtpException ex)
{
MessageBox.Show(ex.Message, " 發送郵件出錯 ");
}
}
上述方法不適用於所有SMTP,經測試zj.com可以,而smtp.163.com不行

3.通過SSL的SMTP

public void SendMailUseGmail()
{
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
msg.To.Add(" a@a.com ");
msg.To.Add(" b@b.com ");
/*
* msg.To.Add("b@b.com");
* msg.To.Add("b@b.com");
* msg.To.Add("b@b.com");可以發送給多人
*/
msg.CC.Add(" c@c.com ");
/*
* msg.CC.Add("c@c.com");
* msg.CC.Add("c@c.com");可以抄送給多人
*/
msg.From = new MailAddress(" a@a.com ", " 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@gmail.com ", " password ");
//上述寫你的GMail郵箱和密碼
client.Port = 587; //Gmail使用的端口
client.Host = " smtp.gmail.com ";
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來發送郵件,成功率極高,幾乎都可以發到,推薦使用。

參考:【 Send E-Mail from your .NET application using your GMail Account 】
[name:Use C# To Send Mail][tags:.Net]

[From AlphaWu.Blog ]

留言

這個網誌中的熱門文章

電腦網路project