建立 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裡掛著。比較郁悶……暫時還不明白為什麼,也許別人看看是不是能試驗成功。或是有什麼解決辦法記得告訴我。
是不是比較狠?我本人最煩的垃圾郵件就這樣肆虐了!