程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#利用CDOSYS組件發郵件的一些小結

C#利用CDOSYS組件發郵件的一些小結

編輯:關於C語言

建立 ASP.Net WEB項目。


using System.Web.Mail;

首先看看利用Inter網上的SMTP服務器來發郵件,現在普遍是登陸SMTP需要驗證的。這裡我們使用的是網易的郵件服務器。


private void SendMailBySMTP()
{
 // 使用一個SMTP的服務器,並且通過驗證
 MailMessage mailobj = new MailMessage();
 mailobj.From = "[email protected]";
 mailobj.To = "[email protected]";
 mailobj.Subject = "測試";
 mailobj.BodyFormat = MailFormat.Text;
 mailobj.Body = "看到了麼?";
 // 通過SMTP服務器驗證
 mailobj.FIElds.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
 mailobj.FIElds.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "username");
 mailobj.FIElds.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "userpassWord");
 SmtpMail.SmtpServer = "smtp.126.com";
 SmtpMail.Send(mailobj);
}
 

注意:如果使用需要驗證的SMTP服務器來發送信件,那麼要確保你在這個郵件服務上有合法的注冊用戶。而且mailobj.From必須也是你自己。也就是說,全部是真實的信息。當然,我發現如果你可以改發件人的名稱。比如,我們這樣寫

mailobj.From = "干部<[email protected]>";
這樣在SMTP服務商同樣能驗證通過,對於收件人來說在收到郵件時會看到比較個性的發件人名稱(eyou會顯示為“干部<[email protected]>”而網易會顯示為“干部”)。當然不論怎麼顯示,你發信時的EMail地址肯定對方是能知道的,可以給你回復。再有,我想可能有些郵件服務器對一些敏感字符作了過濾,我遇上一次,記不得是哪家了。

接下來是用自己的服務器發信了,這個比較爽,也比較狠。
首先要保證你的服務器上有IIS,並運行和配置好“SMTP虛擬服務器”。
先來說說如何搞定SMTP吧[以WindowsXP IIS5 為例]:
1.開啟IIS-SMTP服務
2.SMTP的右鍵菜單-屬性-訪問-中繼
兩種方法:選擇“僅以下列表”添加“127.0.0.1”或者選擇“僅以下列表除以”不添加任何IP[這樣是允許全部用戶,不建議這樣,否則你的機器在網上運行一陣就讓垃圾郵件給玩死了]。
郵件在發送、失敗、等待隊列……都在"C:\Inetpub\mailroot\"下的對應文件夾裡。
好了,看代碼:


private void SendMailByLocalhost()
{
 // 使用自己的虛擬郵件服務器
 MailMessage mailobj = new MailMessage();
 mailobj.From = "只要不空的就可以"; // 只是說程序本身不會出錯
 mailobj.To = "[email protected]";
 mailobj.Subject = "測試";
 mailobj.BodyFormat = MailFormat.Text;
 mailobj.Body = "看到了麼?";
 SmtpMail.SmtpServer = "localhost";
 SmtpMail.Send(mailobj);
}

代碼很少,而且“發信的速度”明顯比上一種方法要快,當然了,其實是提交到本機虛擬郵件服務發送隊列而已。
這裡要說的是,這種方法真的比較狠:
有的郵件系統根本不校驗發送方的EMail是不是合法,mailobj.From填什麼它都照單全收給自己的用戶。
有的郵件系統則要看看發送方的EMail是不是合法,如果不合法有的會做垃圾郵件處理,有的會“消失”了(真的不知道去哪裡了),有的會在本機的C:\Inetpub\mailroot\的子文件夾下滯留。sina的郵箱最怪,用這種方式不過From寫的是真是假一概發不出,而且一直在Queue裡掛著。比較郁悶……暫時還不明白為什麼,也許別人看看是不是能試驗成功。或是有什麼解決辦法記得告訴我。
是不是比較狠?我本人最煩的垃圾郵件就這樣肆虐了!

 

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