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