今天公司那邊有提了一個新的需求,希望投遞簡歷的人符合條件的發到郵箱功能,並存到數據庫,網站后台可以管理這個個人簡歷;不符合要求的可以存到數據庫,但是不顯示,也不發到郵箱。
以前從沒有實現過相關的功能。於是開始看別人的文檔。最后大概知道了有兩個辦法可以解決自己的辦法。
1.就是利用iis的smtp自己搭建一個郵件的服務器。
2.利用第三方插件來完成此功能。
由於第一種方案,需要了解很多的知識(一些協議和smtp的配置等等),不太適合我這個初學者,於是選擇了第二種。
有了插件很簡單。asp.net本身不具有jmail的功能(但是利用iis來實現郵件的發送),所以我們需要安裝一下jmail的插件,插件下載,如果你想進一步了解插件的全部功能,可以參考此文檔,文檔下載。
安裝完插件以后,我們要新建一個網站,並新建一個Bin文件夾,然后右擊點擊Bin文件夾,添加引用,到安裝jmail的目錄找到jmail.dll文件。
引用完成了以后接着我們開始來測試jmail功能了,測試的發送郵件暫時成功的是163的郵箱,gmail測試不成功,hotmail暫時還沒有測試。
首先我們新建一個頁面,並放一個按鈕,按鈕的text為"發送到郵箱",雙擊此按鈕,則vs自動為我們生成了button事件,我們在時間的函數里面寫上如下代碼:
protected void Button1_Click(object sender, EventArgs e) { //我這里測試的郵件賬號是codeany@163.com //測試的密碼是就不投入給大家了,改成自己的密碼就好了
//接受郵箱可以隨便寫一個你自己喜歡的郵箱 jmail.Message Jmail = new jmail.Message(); //創建一個jmail對象 String Subject = "CMPC"; //設置發送郵件的主題 String body = "這個是測試的內容來自吳建明"; //設置發送郵件的內容 String FromEmail = "codeany@163.com"; //發送的郵箱 String ToEmail = "codeany@163.com"; //接受的郵箱 Jmail.Silent = true; //安靜的發送郵件 Jmail.Charset = "GB2312"; //設置發送郵件的字符集 //Jmail.ContentType = "text/html"; Jmail.AddRecipient(ToEmail); //添加發送的郵件 Jmail.From = FromEmail; //從何處發送 Jmail.MailServerUserName = "codeany"; //發件人姓名 Jmail.MailServerPassWord = "******"; //發件郵件的密碼 Jmail.Subject = Subject; //發件郵件的主題 Jmail.AddAttachment(@"I:\data.txt", true, null); //添加I目下面的data.txt文件 Jmail.Body = body; //添加發送郵件的內容 //Jmail.DeferredDelivery = new DateTime(2012, 9, 11,18,0,0); //設置發送郵件的延遲時間 //這個163不行 Jmail.Send("smtp.163.com", false); //發送郵件的服務器 Jmail.Close(); //關閉Jmail }
這里有一點需要注意的asp.net郵件的定時發送不可以實現,winform是可以利用timer控件來完成定時的功能,並不是所有的事情都是絕對的,我們可以在asp.net的global.asax文件中實現此功能,具體的可以百度一下,但是對這個實現時犧牲服務器的性能為代價的,所以這里我不推薦使用。