Domanda

ho il seguente codice riportato di seguito (ho bloccato in xxx, di non pubblicare il nome reale).questo codice funziona bene quando l'ho caricato sul server e inviare messaggi di posta elettronica perfettamente.

        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());
        }

ma quando faccio la prova in locale sulla mia macchina in visual studio, ho un errore:

[SocketException (0x274d): Nessuna connessione potrebbe essere fatto perché il computer di destinazione rifiutata attivamente 66.226.21.251:25] Sistema.Net.Sockets.Presa di corrente.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) +239 Sistema.Net.Sockets.Presa di corrente.InternalConnect(EndPoint remoteEP) +35 Sistema.Net.ServicePoint.ConnectSocketInternal(Boolean errore di connessione, Presa s4, Presa s6, Connettore& socket, Indirizzo ip e indirizzo ConnectSocketState stato, IAsyncResult asyncResult, Int32 timeout, Eccezione& eccezione) +224

[WebException: Impossibile connettersi al server remoto] Sistema.Net.ServicePoint.GetConnection(PooledStream PooledStream, il proprietario dell'Oggetto Boolean async, Indirizzo ip e indirizzo del Socket& abortSocket, Connettore& abortSocket6, Int32 timeout) +5420699 Sistema.Net.PooledStream.Attivare(Oggetto owningObject, Boolean async, Int32 timeout, GeneralAsyncDelegate asyncCallback) +202 Sistema.Net.PooledStream.Attivare(Oggetto owningObject, GeneralAsyncDelegate asyncCallback) +21 Sistema.Net.ConnectionPool.GetConnection(Oggetto owningObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout) +332 Sistema.Net.Mail.SmtpConnection.GetConnection(String host, Int32 porta) +160 Sistema.Net.Mail.SmtpTransport.GetConnection(String host, Int32 porta) +159

eventuali suggerimenti perché questo non avrebbe funzionato

È stato utile?

Soluzione

La prima cosa che farei per l'esecuzione di questo è giù per vedere se il computer di destinazione è, come il messaggio di errore dice che, in realtà, rifiutando le connessioni.Posso collegare alla porta 25 dell'indirizzo IP da qui, quindi è possibile che il messaggio di errore è fuorviante.Queste sono tutte le possibili cause di un mancato collegamento:

  • c'è qualche problema nel codice
  • c'è qualche problema nella libreria che si sta utilizzando
  • hai un firewall locale prevenzione posta in uscita dai programmi strani
  • il tuo ISP non consentire connessioni SMTP in uscita ad eccezione dei propri server
  • intermedi di rete di bloccare le cose
  • il server di posta dell'ISP blocca le connessioni SMTP da rete
  • il server di posta è davvero rifiuto di lei, forse perché sei in una black list

Per ottenere ulteriori dettagli, scaricare e installare Wireshark.È come un debugger per le reti.Avviare l'acquisizione tra il sistema e la rete di destinazione e quindi eseguire il codice.Interpretare i pacchetti catturati richiede una certa esperienza, quindi, se riesci, sentitevi liberi di inviare i dati più qui.

Altri suggerimenti

Limitazioni inoltro sono molto probabilmente non ti permettono di inviare la posta dall'esterno un set consentito di IP. Se il server SMTP è configurato su un web server / applicazioni, probabilmente configurato per consentire la posta da inviare tramite solo la 127.0.0.1.

È possibile configurare un server SMTP locale tramite la Gestione IIS. Se si va su questa strada, assicurarsi che la porta 25 è aperto sul computer locale. Spesso anti-virus blocco di tipo software / controlla questa porta e mucks con la consegna di posta elettronica.

Credo che non si utilizza la porta non nel codice. Utilizzare queste righe, poi la posta dovrebbe essere andato in locale anche.

    smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
    smtp.Timeout = 60000;
    smtp.Port = 25;

Questo è il lavoro sul mio sistema. Spero che funzionerà anche sul sistema locale.

Il provider ha probabilmente firewalled il loro server di posta in modo che sia solo di accettare la posta dal proprio ambiente di hosting.

Cambia in modo da utilizzare il server di posta locale quando si sta testando a livello locale.

Avete chiesto un server XP Mail. Prova hMailServer

Date un'occhiata per vedere se il vostro antivirus sta impazzendo, ho visto questo problema un paio di volte con le persone in esecuzione di McAfee.

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top