本文主要講述基於C#網絡編程的發送郵件的編程,郵件發送功能是基於郵件協議的,常見的電子郵件協議有SMTP(簡單郵件傳輸協議)、POP3(郵局協議)、IMAP(Internet郵件訪問協議),文章主要參考周存傑的《C#網絡編程實例教程》.這也是最後一篇參照該書的網絡編程文章,之後的該系列文章都是基於網絡實際應用的,不會再大量講述原理知識.
//SMTP類經常用法 //構造方法 public SmtpMail(); //Send()方法 發送郵件 返回值:無 public static void Send( MailMessage message //郵件 ); public static void Send( string from, //發送者地址 string to, //收信人地址 string subject, //郵件主題 string messageText //郵件內容 );
2.MailMessage類
其命名控件為System.Web.Mail,該類用於設置郵件內容以及與郵件內容相關的信息,如發送人地址、收信人地址等.
//MailMessage經常使用屬性 //1.Attachments屬性 用於獲取附件的文件列表 public IList Attachments {get;} //2.Bcc屬性 用於獲取或設置暗送於地址,被暗送者的地址 public string Bcc {get; set;} //3.Body屬性 用於獲取或設置郵件內容 public string Body {get; set;} //4.BodyFormat屬性 用於獲取或設置郵件內容的格式 有Html Text格式 public MailFormat BodyFormat {get; set;} //5.Cc屬性 用於獲取或設置抄送於地址,被抄送者的地址 public string Cc {get; set;} //6.From屬性 用於獲取或設置發信人的地址 public string From {get; set;} //7.Headers屬性 用於獲取郵件標頭 public IDictionary Headers {get;} //8.Priority屬性 用於獲取或設置郵件的優先級,包含High Low Normal public MailPriority Priority {get; set;} //9.Subject屬性 用於獲取或設置郵件的主題 public string Subject {get; set;} //10.To屬性 用於獲取或設置郵件的收信人地址 public string To {get; set;} //構造方法 public MailMessage();
3.MailAttachment類
該類用於構造和設置郵件的附件,命名空間為System.Web.Mail.
//MailAttachment類經常使用屬性 //Encoding屬性 用於設置附件的編碼 public MailEncoding Encoding {get;} //Filename屬性 用於設置附件的文件名稱 public string Filename {get;} //構造方法 public MailAttachment( string filename //文件名稱 ); public MailAttachment( string filename, //文件名稱 MailEncoding encoding //編碼 );
//加入命名空間 using System.Net.Mail; //加入私有成員 private MailMessage msg; //用於構造郵件屬性和方法 private Attachment att; //用於構造郵件附件屬性和方法 public Form1() { InitializeComponent(); msg = new MailMessage(); //實例化 } //點擊"發送郵件"按鈕 private void button1_Click(object sender, EventArgs e) { try { //To郵件收信人地址屬性 僅僅讀屬性不能賦值 msg.To.Add(textBox1.Text); //From郵件發件人地址屬性 msg.From = new MailAddress(textBox2.Text); //Subject郵件主題屬性 msg.Subject = textBox3.Text; msg.SubjectEncoding = Encoding.Default; //Body設置郵件內容屬性 msg.Body = richTextBox1.Text; msg.BodyEncoding = Encoding.Default; //設置郵件的優先級Priority屬性 if (radioButton1.Checked) msg.Priority = MailPriority.High; else if (radioButton2.Checked) msg.Priority = MailPriority.Low; else if (radioButton3.Checked) msg.Priority = MailPriority.Normal; else msg.Priority = MailPriority.Normal; //發送郵件 SmtpClient client = new SmtpClient(); //郵件server設置smtpport 默認25 client.Host = "smtp.163.com"; client.Port = 25; //郵件發送方式 通過網絡發送到SMTPserver client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; //憑證 發件人登錄郵箱的username和password client.Credentials = new System.Net.NetworkCredential("1520161xxxx", "19911203xxxx"); client.Send(msg); MessageBox.Show("郵件發送成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception m) //異常處理 { MessageBox.Show(m.Message); } } //點擊"加入附件"按鈕 private void button2_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.CheckFileExists = true; //不存在文件名稱顯示警告 openFileDialog.ValidateNames = true; //值接受Win32文件 openFileDialog.Multiselect = false; //不同意多選文件 openFileDialog.Filter = "全部文件(*.*)|*.*"; //加入附件 現僅支持加入一個附件 if (openFileDialog.ShowDialog() == DialogResult.OK) { richTextBox1.Text = openFileDialog.FileName; att = new Attachment(openFileDialog.FileName); msg.Attachments.Add(att); } } //點擊"刪除附件"按鈕 private void button3_Click(object sender, EventArgs e) { msg.Attachments.Clear(); }
執行結果例如以下圖所看到的:
這不過C#使用SMTP發送郵件的基礎知識,讀者能夠自己完好做成更好的界面.
你也能夠調用Windows自帶的郵件發送程序實現,Windows自帶Outlook Express軟件,能夠通過函數ShellExecute()或CreateProcess()調用Outlook Express,Ctrl+R調用"執行",輸入“mailto:[email protected]”就可以調用發送郵件.使用該軟件時首先須要測試賬戶,我綁定的是163郵箱.讀者感興趣能夠自己完畢.
本文主要講述C#網絡編程中SMTP郵件協議,怎樣發送郵件的過程,並比較了新版的和舊版的方法.這將是我的C#網絡編程的最後一篇文章,接下來想學習C#網絡編程爬蟲、下載網上圖片、數據挖掘結合之類的知識.希望文章對大家有所幫助,假設有錯誤或不足之處,請海涵!眼下法國VS瑞士 3:0.
(By:Eastmount 2014-6-21 夜4點 原創CSDN http://blog.csdn.net/eastmount/)
推薦相參考的關資料,很不錯,值得學習:
1.[C# 網絡編程系列]專題十:實現簡單的郵件收發器 -- Learning_Hard
http://blog.csdn.net/learning_hard/article/details/9071041
2.C#使用163的SMTPserver發送郵件 -- PowerCoder
http://www.cnblogs.com/OpenCoder/archive/2010/07/16/1779247.html
3.C#郵件下載 -- zhouquanandy
http://download.csdn.net/detail/zhouquanandy/4444802
4.《C#網絡編程實例教程》-- 周存傑
5.C#發送郵件(加入附件)-- 期待秋天的葉
http://blog.csdn.net/kkkkkxiaofei/article/details/7941239