程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP技巧 >> Asp.Net 發送 smpt郵件

Asp.Net 發送 smpt郵件

編輯:ASP技巧

using System.Web.Mail ;
PRivate void Button1_Click(object sender, System.EventArgs e)
  {
 
   //實例化MailMessage對象
   System.Web.Mail.MailMessage mail=new System.Web.Mail.MailMessage();

   //定義郵件的發送地址 , 可以隨便填一個不存在的地址,垃圾郵件就是這樣子做的吧^_^
   mail.From="[email protected]";

   //定義郵件的接收地址
   //設置以分號分隔的收件人電子郵件地址列表
   mail.To="[email protected]";

   //定義郵件的暗送地址
   //設置以分號分隔的電子郵件地址列表
   //mail.Bcc="[email protected]";

   //定義郵件的抄送地址
   //設置以分號分隔的電子郵件地址列表
   //mail.Cc="[email protected];[email protected]

   //定義郵件的主題
    mail.Subject="widebright 的郵件測試 ASP.Net發送郵件學習";

   //設置電子郵件正文的內容類型
   //在這裡我們以Html的格式發送
   mail.BodyFormat=System.Web.Mail.MailFormat.Html;

   //設置電子郵件的正文
   mail.Body="測試一下,看行不行喲";

  
      //用 @ 引起來的字符串以 @ 開頭,並且也用雙引號引起來。例如:
      //用 @ 引起來的優點在於換碼序列“不” 被處理,這樣就可以輕松寫出字符串,例如一個完全限定的文件名:
      //@"c:\Docs\Source\a.txt"  // rather than "c:\\Docs\\Source\\a.txt"
     //若要在一個用 @ 引起來的字符串中包括一個雙引號,請使用兩對雙引號:
     //  @"""Ahoy!"" cried the captain." // "Ahoy!" crIEd the captain.
    //  @ 符號的另一種用法是使用碰巧成為 C# 關鍵字的被引用的 (/reference) 標識符。
      //  http://msdn2.microsoft.com/zh-CN/library/362314fe(VS.80).aspx

            //設置一個附件
      System.Web.Mail.MailAttachment mailAttachment=new System.Web.Mail.MailAttachment(@" F:\dddddd.txt");
   
   //郵件附加上一個附件
       mail.Attachments.Add(mailAttachment);
            
    //多個附件在這裡繼續添加
              mailAttachment=new System.Web.Mail.MailAttachment(@"F:\ASP_net 發送郵件代碼_百度知道.mht");
              mail.Attachments.Add(mailAttachment);


   //SMTP服務器 ,因為用的是本機架設的,所以寫127.0.0.1 , 如果連接的是其他服務器的話,像163郵箱,要寫smpt.163.com
     System.Web.Mail.SmtpMail.SmtpServer="127.0.0.1";  

   //說是許多SMTP服務器都需要身份驗證 ,防止垃圾郵件,好像叫做擴展smpt協議什麼的。
   //但這裡連接的是自己的smpt服務器,簡單的smpt,所以也沒有什麼驗證了。
   //至於從本機的SMPT服務器再把郵件發送到163或者其他郵箱 的時候要不要驗證就不知道了, 實測時郵件時可以發到
   //@163.com , @eyou.com,@x.cn的,也不用什麼驗證。

   //驗證
   //mail.FIElds.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
   //登陸名
   //mail.FIElds.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "widebright");
   //登陸密碼
   //mail.FIElds.Add("http://schemas.microsoft.com/cdo/configuration/sendpassWord", "widebright");

   //發送
   System.Web.Mail.SmtpMail.Send(mail);
 
  }


上面的代碼是采用  .Net 中提供的  System.Web.Mail.SmtpMail類來發送郵件,自動連接
SMPT服務器來發送郵件。以有的人是自己用TCP類,或者socket寫代碼實現smpt協議,不過那樣子
要處理很多編碼啊,協議啊等,比較麻煩。我以前用VB時也做過一個,smpt協議比較簡單,不過
那些附件的編碼就還要寫很多代碼。
   
     這裡只是smtp發信代碼而已,如果要做收信等 好要pop3   服務器提供對pop3協議的支持才行。
smtp服務器是安裝完IIS就有的了,pop3切沒有自帶,安裝起來也會麻煩一些吧,沒試過!
   
SMTP服務器的配置

    我是安裝完IIS 5.1後就自己啟用了,在IIS信息服務管理器中配置一下就可以了。
1。 在 Domains 裡面增加幾個域名:右鍵當擊“Default SMTP Virtual Server”  中的Domains
選 “New”  新建, ---》 Domain Type 選 “Remote”,
Domain name 分別填 163.com  eyou.com  x.cn, 因為我要給這些服務器發郵件,和上面代碼中


===============
    mail.To="[email protected]";
===============

相對應的,你要發送郵件給誰,就要設置相應的域名,不設置的時候郵件是發送不出去的。
2。 右鍵單擊  163.com 等域名,選 “屬性” ,勾上 “Allow incoming mail to be relayed to this domain”,勾上後郵件才能發送出去,否則還是有錯。
下面的 Route domain 選默認的 Use DNS to route to domain 就可以了。


         關鍵是在IIS中要設置好對應的smtp服務器域名,就可以發送郵件了。我在ASP.Net頁面上測試了
好幾個郵箱都是可以正常發送出去的。 像163郵箱一點按鈕發送,就會收得到了。

剛發現可以添加
*.com   
*.Net
*cn
域名來匹配大多數的郵箱。
如增加了*.com   域名之後,就可以給  @163.com  ,@eyou.com發信了
    


  

在 Windows xp+ visual sutdio 2003 + IIS5.1 環境下測試通過,
不過只有發現發送到新浪郵箱的信件收不到,不知道為什麼。

出現 SMTP典型錯誤 550 5 7 1 Uable to relay 
則除了domains 域名沒有設置好還有可能是
SMTP虛擬服務器的設置中沒有選中“allow computers which successfully authenticate to relay”復選框。如下所示,
先打開SMTP Virtual Server的屬性頁的Access頁:
然後點擊“Relay”按鈕,看“Allow all computers which successfully authenticate to relay,regardless of the list above”是否選中:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved