IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當前所在位置: 首頁網(wǎng)絡編程.Net編程 → 支持ESMTP身份驗證的郵件發(fā)送

支持ESMTP身份驗證的郵件發(fā)送

時間: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,身份驗證

相關閱讀

文章評論
發(fā)表評論

熱門文章 誅仙3飛升任務怎么做-誅仙3飛升任務流程最新2022 誅仙3飛升任務怎么做-誅仙3飛升任務流程最新2022 鐘離圣遺物推薦-原神鐘離圣遺物詞條 鐘離圣遺物推薦-原神鐘離圣遺物詞條 解決方法:應用程序“DEFAULT WEB SITE”中的服務器錯誤 解決方法:應用程序“DEFAULT WEB SITE”中的服務器錯誤 使用aspnet_regiis.exe 重新注冊.NET Framework 使用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)錯誤的解決方法