1. 程式人生 > >C#傳送郵件(新增附件)!

C#傳送郵件(新增附件)!

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附近的幾行)寫成方法,迴圈呼叫即可。