C#傳送郵件(新增附件)!
阿新 • • 發佈:2019-01-03
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Mail; namespace WindowsFormsApplication63 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //開啟上傳附件的對話方塊 private void btnUP_Click(object sender, EventArgs e) { oFDialogSFile.InitialDirectory = "C:\\";//設定對話方塊的初始目錄為C盤 oFDialogSFile.Filter = "all files (*.*)|*.*";//篩選字串為所有檔案 oFDialogSFile.RestoreDirectory = true; oFDialogSFile.ShowDialog(); cboxAccessories.Items.Add(oFDialogSFile.FileName.Trim());//當選擇好檔案後將檔名賦值給下拉框 } //傳送郵件 private void btnSend_Click(object sender, EventArgs e) { try { string file = Application.StartupPath + "testXML.xml"; //SmtpClient下的一個物件,用以設定郵件的主題和內容 System.Net.Mail.MailMessage myMail = new System.Net.Mail.MailMessage(); //傳送端到接收端的郵箱地址 myMail = new System.Net.Mail.MailMessage(txtSEmail.Text.Trim(), txtCEmail.Text.Trim()); myMail.Subject = txtETitle.Text.Trim(); myMail.Body = txtEContent.Text.Trim(); if (cboxAccessories.Items.Count > 0) { for (int i = 0; i < cboxAccessories.Items.Count; i++) { //建立郵件附件類的一個物件,語法格式為System.Net.Mail.Attachment(檔名,檔案格式) System.Net.Mail.Attachment myAttachment = new System.Net.Mail.Attachment( cboxAccessories.Items[i].ToString(), System.Net.Mime.MediaTypeNames.Application.Octet); //MIME協議下的一個物件,用以設定附件的建立時間,修改時間以及讀取時間 System.Net.Mime.ContentDisposition disposition = myAttachment.ContentDisposition; disposition.CreationDate = System.IO.File.GetCreationTime(file); disposition.ModificationDate = System.IO.File.GetLastWriteTime(file); disposition.ReadDate = System.IO.File.GetLastAccessTime(file); //用smtpclient物件裡attachments屬性,新增上面設定好的myattachment myMail.Attachments.Add(myAttachment); } } //建立傳送物件client,驗證郵件伺服器,伺服器埠,使用者名稱,以及密碼 System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(txtSService.Text.Trim(), Convert.ToInt32(txtServicePort.Text.Trim())); client.Credentials = new System.Net.NetworkCredential(txtUPwd.Text.Trim(), txtCEmail.Text.Trim()); client.Send(myMail); MessageBox.Show("郵件傳送成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void 刪除上傳檔案_Click(object sender, EventArgs e) { if (cboxAccessories.Text == "") { MessageBox.Show("沒有附件可刪!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { cboxAccessories.Items.Remove(cboxAccessories.Text.Trim()); } } } }
效果圖如下:
點擊發送,效果如下
總結一下,傳送郵件的過程如下:
1.建立System.Net.Mail.MailMessage下的物件,設定郵件的內容和主題。
2.如果要新增附件,建立System.Net.Mail.Attatch下的物件,用1中的物件中的新增附件的屬性讀取它。
3.SEND郵件(MAIL+附件)。
如果要實現群發,則可以將傳送郵件的程式碼(TRY附近的幾行)寫成方法,迴圈呼叫即可。