asp.net 開發 跬步篇〔3〕.net 郵件批量發送

來源:互聯網
上載者:User

     最近的一個項目中,有一個批量發送工資條的功能,貌似很神秘,其實很簡單。以前就知道.net中各有一個專門實現Email發送的命名空間,剛好這次可以實踐一下。在這又得讚美一下.net,哈哈真是太會辦事了,簡單實現。

     廢話不在多說,直接切入主題吧。功能的需求是每個月在產生工資報表後觸發操作,可以批量發送到地址薄中的各個員工的郵箱中。所以我就寫了一個發送郵件的class、使用跟的時候直接用就可以了。發送郵件的命名空間是System.Net.Mail,使用也很簡單〔代碼見下〕

 

/// <summary>
/// 發送郵件
/// </summary>
/// <param name="mailHs">郵件集合hs[key:郵箱地址#收信人名稱[代碼]; value:郵箱內容]</param>
/// <param name="smtpAuthUsername">寄件者郵箱</param>
/// <param name="smtpAuthPassword">郵箱密碼</param>
public void Send(Hashtable mailHs, string smtpAuthUsername, string smtpAuthPassword, string smtpServer, string titel, string subject)
{
string meg = string.Empty;


//定義傳輸協議
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(smtpServer);
//設定認證寄件者
smtp.Credentials = new System.Net.NetworkCredential(smtpAuthUsername, smtpAuthPassword);

//非同步發送完成擷取發送狀態
//smtp.SendCompleted += new System.Net.Mail.SendCompletedEventHandler(SendCompletedCallback);
System.Net.Mail.MailMessage mail;

foreach (string var in mailHs.Keys)
{
string[] list = var.Split('#');
try
{
mail = new System.Net.Mail.MailMessage();
mail.From = new System.Net.Mail.MailAddress(smtpAuthUsername, titel);
//回複人,回複人名
mail.ReplyTo = new System.Net.Mail.MailAddress(smtpAuthUsername, titel);
//收件者
mail.To.Add(list[0]);
//郵件優先順序
mail.Priority = System.Net.Mail.MailPriority.Normal;
//設定html郵件
mail.IsBodyHtml = true;
//標題
mail.Subject = subject;
//內容
mail.Body = mailHs[var].ToString();

smtp.Send(mail);//;, list[1]);
meg = string.Format("{0} {1}郵件發送成功。", System.DateTime.Now.ToString(), list[1]);
WriteLog(meg);
}
catch
{
meg = string.Format("{0} {1}郵件發送失敗。", System.DateTime.Now.ToString(), list[1]);

WriteLog(meg);
}
}
}

 

 

      代碼中,我用的是郵件的同步發送、還有一種非同步發送,但是兩種方式都有自己的應用情境。因為我的功能需求是批量發送工資條,郵箱中的每個人的資訊是不同的。所以用同步發送,用hashtable 儲存了地址和內容,然後一個迴圈,發送完成。如果使用跟的批量是一封郵件批量發送多多人,那麼就可以用非同步發送,這樣的話效能上會有所提高,並且避免大資料量下死掉。非同步時候記得用這個回調:

smtp.SendCompleted += new System.Net.Mail.SendCompletedEventHandler(SendCompletedCallback); 

這樣可以在這個方法中寫一些後續的處理,比如發送結果的反饋。我的功能實現中是在一個log.txt檔案中寫入記錄檔。這樣在發送完成後,可以查看發送的結果。同步就不說了直接在完成後,寫一個方法就ok了。簡單又實用,真是居家必備。

  分享了!歡迎交流!知識雖小,重在積累。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.