[英]Mail sending code works at local but not on server in asp.net mvc
[英]sending mail works on server but not on my local machine
我在下面有以下代碼(我被卡在xxx中以不公開真實姓名)。 當我上傳到服務器時,此代碼可以正常工作,並且可以完美發送電子郵件。
MailMessage msg = new MailMessage();
msg.From = new MailAddress(fromEmailAddress_);
msg.To.Add(new MailAddress(toEmailAddress_));
msg.Subject = subject_;
msg.Body = body_;
msg.IsBodyHtml = true;
msg.Priority = MailPriority.High;
NetworkCredential basicAuthenticationInfo = new System.Net.NetworkCredential("xxx@xxxx.org", "password");
try
{
SmtpClient c = new SmtpClient("mail.xxx.org");
c.UseDefaultCredentials = false;
c.Credentials = basicAuthenticationInfo;
c.Send(msg);
}
catch (Exception ex)
{
throw ex;
Console.Write(ex.Message.ToString());
}
但是,當我在Visual Studio中的計算機上進行本地測試時,出現錯誤:
[SocketException(0x274d): 無法建立連接,因為目標計算機主動拒絕了它 66.226.21.251:25] System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot,SocketAddress socketAddress)+239 System.Net.Sockets.Socket。 InternalConnect(Endpoint remoteEP)+35 System.Net.ServicePoint.ConnectSocketInternal(布爾值connectFailure,套接字s4,套接字s6,套接字和套接字,IP地址和地址,ConnectSocketState狀態,IAsyncResult asyncResult,Int32超時,異常和異常)+224
[WebException: 無法連接到遠程服務器 ] System.Net.ServicePoint.GetConnection(PooledStream PooledStream,對象所有者,布爾異步,IPAddress&地址,Socket&abortSocket,Socket&abortSocket6,Int32超時)+5420699 System.Net.PooledStream.Activate(對象owningObject,布爾異步,Int32超時,GeneralAsyncDelegate asyncCallback)+202 System.Net.PooledStream.Activate(Object owningObject,GeneralAsyncDelegate asyncCallback)+21 System.Net.ConnectionPool.GetConnection(Object owningObject,GeneralAsyncDelegate asyncCallback,Int32 creationTimeout)+332系統.Net.Mail.SmtpConnection.GetConnection(字符串主機,Int32端口)+160 System.Net.Mail.SmtpTransport.GetConnection(字符串主機,Int32端口)+159
關於為什么這行不通的任何建議
要執行此操作,我要做的第一件事是查看目標計算機是否確實如錯誤消息所示實際上拒絕了連接。 我可以從此處連接到該IP地址上的端口25,因此您的錯誤消息可能會引起誤解。 這些都是導致連接失敗的可能原因:
要獲取更多詳細信息,請下載並安裝Wireshark 。 就像網絡的調試器一樣。 在系統和目標網絡之間開始捕獲,然后運行代碼。 解釋捕獲的數據包需要一些經驗,因此,如果遇到困難,請隨時在此處發布更多數據。
中繼限制最有可能阻止您從允許的一組IP之外發送郵件。 如果在Web /應用程序服務器上配置了SMTP服務器,則可能已將其設置為僅允許通過127.0.0.1發送郵件。
您可以通過IIS管理器配置本地SMTP服務器。 如果沿着這條路徑走,請確保在本地計算機上打開了端口25。 通常,防病毒類型的軟件會阻止/監視此端口,並會干擾電子郵件的傳遞。
我認為您沒有在代碼中使用端口號。 使用這些行,然后郵件也應放在本地。
smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
smtp.Timeout = 60000;
smtp.Port = 25;
這正在我的系統上工作。 我希望它也可以在您的本地系統上運行。
該提供程序可能已將其郵件服務器防火牆隔離,以使其僅接受來自其托管環境的郵件。
在本地測試時,將其更改為使用本地郵件服務器。
您要求提供XP Mail Server。 試試hMailServer
看看您的殺毒軟件是否會發瘋,我已經與運行mcafee的人見過幾次此問題。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.