我試圖使用asp.net mvc應用程序發送電子郵件。使用smtp發送電子郵件僅在通過outlook發送後纔有效
using (SmtpClient client = new SmtpClient())
{
MailMessage message = new MailMessage(from, to, subject, body);
client.Timeout = 10000;
client.Send(message);
return false;
}
的事情是,它不工作(我得到超時除外),直到我嘗試使用Outlook發送電子郵件:SMTP客戶端在web.config中例如爲:
<mailSettings>
<smtp from="[email protected]">
<network host="mail.test.sk" defaultCredentials="false" userName="[email protected]" password="pass" port="25"/>
</smtp>
</mailSettings>
C#配置。在通過outlook發送電子郵件之後,它也成功通過我的Web應用程序發送它。是否有某種特殊的身份驗證,Outlook允許所有來自我的IP的電子郵件進行身份驗證?只有通過outlook發送後,它的工作原理是什麼?
BTW: 我在VS asp.net開發服務器上運行應用程序。當我將其部署到webhosting服務器時,它不起作用(超時)。 我的虛擬主機提供商告訴我,該服務器上有一個經典的smtp認證(不是smtp之前的pop3)。
編輯:
我想通了,當它的工作,我嘗試過通過telnet或者Wireshark的追查,通信發起者:
220 mail2.hostmaster.sk ESMTP Postfix
EHLO fernet-PC
250-mail2.hostmaster.sk
250-PIPELINING
250-SIZE 104857600
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
...
時相比,它沒有工作(只是嘗試前一天),整個通信看起來像:
220-mail2.hostmaster.sk ESMTP Postfix
EHLO fernet-PC
250-mail2.hostmaster.sk
250-SIZE 104857600
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
所以在支持AUTH甲基差異ods和支持流水線。我想那System.Net.Mail.SmtpClient然後不知道它應該使用哪種認證方法,所以它stucks,因此我得到超時異常。
有趣的是,Outlook沒有連接和發送電子郵件的問題。
我解決了我的問題,不使用他們的smtp服務器,因爲我沒有時間。我正在使用Gmail的SMTP服務器。我創建了一個新的gmail帳戶,在其中設置了我需要的別名,所以電子郵件看起來並不像第一次看到的那樣來自gmail。
您是否有防病毒運行檢查端口25(諾頓,邁克菲等)的出站連接 –
我已編輯您的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –
你有沒有在本地和服務器上的問題,或只是其中之一? – Jason