簡體   English   中英

發送郵件在服務器上有效,但在我的本地計算機上無效

[英]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,因此您的錯誤消息可能會引起誤解。 這些都是導致連接失敗的可能原因:

  • 您的代碼中存在一些問題
  • 您正在使用的庫中存在一些問題
  • 您有本地防火牆,可防止來自陌生程序的出站郵件
  • 您的ISP不允許除與其自己的服務器外的出站SMTP連接
  • 一些中間網絡正在阻止事物
  • 郵件服務器的ISP阻止了來自網絡的SMTP連接
  • 郵件服務器確實拒絕了您,可能是因為您在阻止列表中

要獲取更多詳細信息,請下載並安裝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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM