標籤:send 操作 sage error 逾時 命令 匹配 定時 同事
今天臨時維護了前同事做的定時發送郵件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來執行定時任務,應該更合適。
C#定時發送郵箱設定