今天臨時維護了前同事做的定時發送郵件Demo。 原來是使用網易163郵箱定時發送,但是會出現郵箱收不到郵件的情況。 今天把它改成了qq郵箱,發現qq郵箱比較穩定,基本沒有漏掉的郵件。 但是在改的過程中,出現了一些配置上的問題,趁有時間記錄下來。 1.先改smtp伺服器,這個就不用說了。qq郵箱為sm ...
今天臨時維護了前同事做的定時發送郵件Demo。
原來是使用網易163郵箱定時發送,但是會出現郵箱收不到郵件的情況。
今天把它改成了qq郵箱,發現qq郵箱比較穩定,基本沒有漏掉的郵件。
但是在改的過程中,出現了一些配置上的問題,趁有時間記錄下來。
1.先改smtp伺服器,這個就不用說了。qq郵箱為smtp.qq.com
2.接著用你的qq登錄郵箱,在設置——賬戶中,開啟pop3/stmp設置(如果你的郵箱是剛激活的,需要等待十四天才能使用該功能)
3.開啟後需要生成授權碼,(qq郵箱在第三方客戶端中,只支持使用賬號+授權碼,為了安全)
具體設置可見:http://service.mail.qq.com/cgi-bin/help?subtype=1&&no=1001256&&id=28
4.而網易原來是用沒有使用ssl加密的25埠,到了qq郵箱,就不行了。必須要用ssl加密的465/587埠
基本是設置成這樣,就可以使用SmtpClient類的實例Send方法發送郵件了,使用MailAddress類和MailMessage類封裝要發送的信息。
其中遇到的問題:
(1)命令順序不正確。 伺服器響應為:Error: need EHLO and AUTH first !
解決方案:要開啟smtp服務,入上上圖所示。
(2)這裡的密碼使用授權碼。
(3)參數或變數中有語法錯誤。 伺服器響應為: mail from address must be same as authorization user
qq郵箱需要使用授權碼登錄,而不是郵箱密碼。
暫未解決的問題:
<1>.不知道為什麼使用465埠,一直顯示操作超時。而使用587埠則一直能正常發送。
有大神知道為什麼嗎??請指教。
<2>.目前代碼是使用Timer每秒來匹配一次配置文件的時間,如果相同,則執行發送郵件的代碼。
感覺有點麻煩,接下來打算使用quartz.net來執行定時任務,應該更合適。