時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
使用.NET Framework下的System.Net.Mail.SmtpClient可以很容易的實現(xiàn)郵件發(fā)送,但現(xiàn)在很多郵件服務器已經(jīng)支持ESMTP協(xié)議。而ESMTP最大的區(qū)別在于發(fā)送時需要提供帳號密碼做驗證。ESMTP通過流的方式發(fā)送命令與服務器交互,完成郵件的發(fā)送與接受。更多關于SMTP的命令請參考:
下面是一個簡單的示例:(沒有做任何判斷與封裝,僅供參考)
代碼
string smtp = "mail.com";
string from = "[email protected]";
string pwd = "pwd";
string to = "[email protected]";
//建立鏈接
TcpClient tc = new TcpClient(smtp,25);
byte[] b = new byte[1024];
tc.GetStream().Read(b,0,b.Length);
Response.Write(Encoding.UTF8.GetString(b)+"
");
//標識身份
WriteMsg(tc.GetStream(), "HELO xxxx\r\n");
Response.Write(ReadMsg(tc.GetStream()) + "
");
//身份驗證開始
WriteMsg(tc.GetStream(), "AUTH LOGIN\r\n");
Response.Write(ReadMsg(tc.GetStream()) + "
");
//帳號 base64編碼
byte[] bTxt=new byte[1024];
bTxt=Encoding.UTF8.GetBytes(from);
WriteMsg(tc.GetStream(), Convert.ToBase64String(bTxt)+"\r\n");
Response.Write(ReadMsg(tc.GetStream()) + "
");
//密碼base64編碼
bTxt=Encoding.UTF8.GetBytes(pwd);
WriteMsg(tc.GetStream(), Convert.ToBase64String(bTxt) + "\r\n");
Response.Write(ReadMsg(tc.GetStream()) + "
");
//身份驗證結(jié)束
//發(fā)送郵件地址
WriteMsg(tc.GetStream(), string.Format("MAIL FROM:{0}\r\n", from));
Response.Write(ReadMsg(tc.GetStream()) + "
");
//接受郵件地址,可以有多個RCPT TO
WriteMsg(tc.GetStream(), string.Format("RCPT TO:{0}\r\n", to));
Response.Write(ReadMsg(tc.GetStream()) + "
");
//初如化
WriteMsg(tc.GetStream(), "DATA \r\n");
Response.Write(ReadMsg(tc.GetStream()) + "
");
//郵件內(nèi)容
StringBuilder sb = new StringBuilder();
sb.AppendFormat("From:{0}\r\n", from);//發(fā)信人
sb.AppendFormat("To:{0}\r\n", to);//收信人,可以有多個,用分號隔開, 這兩行可以與上面的MAIL FROM和RCPT TO不同(顯示在郵件內(nèi)容里的)
sb.AppendFormat("Date:{0}\r\n",DateTime.Now.ToString());//時間
sb.AppendFormat("Subject:{0}\r\n", "測試");//主題
sb.Append("\r\n");
sb.Append("內(nèi)容"); //正文
sb.Append("\r\n.\r\n");
WriteMsg(tc.GetStream(), sb.ToString());
Response.Write(ReadMsg(tc.GetStream()) + "
");
//結(jié)束會話
WriteMsg(tc.GetStream(), "QUIT");
//關閉鏈接
tc.Close();
如果運行正常,上面的返回狀態(tài)依次為:
220 mail.com ESMTP CMailServer 5.4.6 SMTP Service Ready
250 welcome here
334 VXNlcm5hbWU6
334 UGFzc3dvcmQ6
235 OK
250 OK
250 OK
354 send the mail data, end with .
250 OK
關鍵詞標簽:ESMTP,身份驗證
相關閱讀
熱門文章 誅仙3飛升任務怎么做-誅仙3飛升任務流程最新2022 鐘離圣遺物推薦-原神鐘離圣遺物詞條 解決方法:應用程序“DEFAULT WEB SITE”中的服務器錯誤 使用aspnet_regiis.exe 重新注冊.NET Framework
人氣排行 誅仙3飛升任務怎么做-誅仙3飛升任務流程最新2022 asp.net表單提交方法GET\POST 在ASP.NET中如何判斷用戶IE瀏覽器的版本 Asp.net中messagebox的實現(xiàn)方法 Asp.net中的web.config配置 在ASP.NET MVC中實現(xiàn)大文件異步上傳 asp.net獲取URL和IP地址 FileUpload上傳多文件出現(xiàn)錯誤的解決方法