一直想把發送郵件的功能掌握,總是各種情況拖著了,這兩天終於看了一下,整理一下,希望能幫到想學的。
發送郵件使用SMTP服務器,有兩種方案,一種是使用IIS的SMTP功能;另一種是直接使用郵件供應商的SMTP,比如Gmail、Sina、QQ等,使用這些SMTP服務器必須得注冊帳號,一般可以直接用郵箱及密碼,但是有些郵箱必須開啟POP3/SMTP服務才可以,比如QQ郵箱默認是關閉的,可以在“設置”->“賬戶”裡面找到。我今天整理的都是用的第二種。
早期的.NET版本用的是 System.Web.Mail 類提供的功能來發郵件;2.0版本推出了 System.Net.Mail 類來代替 System.Web.Mail ,但是我在 WebForm 裡面使用的時候用System.Net.Mail 老是觸發異常,後來改用 System.Web.Mail 才成功了,可以看下我代碼裡的區別;ASP.NET MVC 3 提供了 WebMail 類來發送郵件,更加方便。
控制台程序、WPF、WebForm 及 ASP.NET MVC 我都測試了一下,控制台程序和 WPF 都用了 System.Net.Mail ,WebForm 和 ASP.NET MVC 都可以用 System.Web.Mail ,而 ASP.NET MVC 3 直接用 WebMail 更方便。下面我把代碼分別貼出來。
控制台程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;//添加引用
namespace SendEmail
{
class Program
{
static void Main(string[] args)
{
Program p = new Program();
bool flag = p.SendEmail();
if (flag)
{
Console.Write("Success !");
}
Console.Read();
}
public bool SendEmail()
{
MailMessage msg = new MailMessage();
msg.To.Add("1234567@qq.com");//郵件接收者的帳號
msg.From = new MailAddress("1234567@qq.com", "nickname", System.Text.Encoding.UTF8);//發送郵件的帳號及顯示名稱和字符編碼
msg.Subject = "Subject";//郵件標題
msg.SubjectEncoding = System.Text.Encoding.UTF8;//郵件標題編碼
msg.Body = "Content";//郵件內容
msg.BodyEncoding = System.Text.Encoding.UTF8;//郵件內容編碼
msg.IsBodyHtml = false;//是否是HTML郵件
msg.Priority = MailPriority.High;//郵件優先級
SmtpClient client = new SmtpClient();
client.Credentials = new System.Net.NetworkCredential("1234567@qq.com", "password");//注冊的郵箱和密碼,就QQ郵箱而言,如果設置了獨立密碼,要用獨立密碼代替密碼
client.Host = "smtp.qq.com";//QQ郵箱對應的SMTP服務器
object userState = msg;
try
{
client.SendAsync(msg, userState);
return true;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return false;
}
}
}
}
WPF:
System.Net.Mail;
Button_Click( flag = MessageBox.Show(,
MailMessage message = message.To.Add( message.From = MailAddress(, message.Subject = message.SubjectEncoding = message.Body = message.BodyEncoding = message.IsBodyHtml = message.Priority = Attachment att = Attachment();
SmtpClient smtp = smtp.Credentials = System.Net.NetworkCredential(, smtp.Host = userState =
MessageBox.Show(ex.Message, }
WebForm:
System.Web.Mail;
Page_Load(
Button1_Click( flag = Response.Write(
MailMessage message = message.To = message.From = message.Subject = message.Body =
message.Fields.Add(,
message.Fields.Add(,
message.Fields.Add(,
SmtpMail.SmtpServer =
}
ASP.NET MVC :
= = ;
WebMail.EnableSsl = ;
WebMail.UserName = = = ,,“Content