Pergunta

Eu tenho o seguinte código abaixo (i ter ficado em xxx de não publicar o nome real). esse código funciona bem quando eu fazer o upload para o servidor e irá enviar e-mails perfeitamente.

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

mas quando eu testar localmente na minha máquina no estúdio visual, eu recebo um erro:

[SocketException (0x274d): Nenhuma conexão pôde ser feita porque a máquina de destino recusou ativamente 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 (Boolean connectFailure, soquete S4, S6 soquete, soquete & soquete, IPAddress & endereço, estado ConnectSocketState, IAsyncResult asyncResult, tempo limite de Int32, Exception & exceção) 224

[WebException: Não é possível conectar para o servidor remoto ] System.Net.ServicePoint.GetConnection (PooledStream PooledStream, proprietário Object, assíncrona booleano, IPAddress & endereço, soquete & abortSocket, soquete & abortSocket6, Int32 timeout) 5.420.699 System.Net.PooledStream.Activate (Object owningObject, assíncrono booleano, Int32 tempo limite, GeneralAsyncDelegate AsyncCallback) 202 System.Net.PooledStream.Activate (Object owningObject, GeneralAsyncDelegate AsyncCallback) 21 System.Net.ConnectionPool.GetConnection (Object owningObject, GeneralAsyncDelegate AsyncCallback, Int32 creationTimeout) 332 System.Net.Mail.SmtpConnection.GetConnection (String host, port Int32) 160 System.Net.Mail.SmtpTransport.GetConnection (String host, port Int32) 159

quaisquer sugestões de que isso não iria funcionar

Foi útil?

Solução

A primeira coisa que eu faria para executar este baixo é para ver se a máquina de destino é, como a mensagem de erro diz, na verdade, recusando as conexões. I pode se conectar à porta 25 que o endereço IP a partir daqui, por isso é possível que a sua mensagem de erro é enganosa. Estas são todas as possíveis causas de uma falha para conectar: ??

  • há algum problema no seu código
  • há algum problema na biblioteca que você está usando
  • você tem um firewall local impedindo correio de saída a partir de programas estranhos
  • seu ISP não permitir conexões SMTP de saída, exceto para seus próprios servidores
  • alguma rede intermediário está bloqueando as coisas
  • ISP do servidor de correio está a bloquear ligações SMTP de sua rede
  • o servidor de correio realmente está rejeitando você, talvez porque você está em uma lista de bloqueios

Para obter mais detalhes, baixe e instale Wireshark . É como um depurador para redes. Inicie uma captura entre o sistema e a rede de destino e, em seguida, executar o código. Interpretando os pacotes capturados leva alguma experiência, então se você conseguir se sente preso livre para postar mais dados aqui.

Outras dicas

Restrições de retransmissão são provavelmente impedi-lo de enviar e-mails de fora um conjunto permitido de IPs. Se o servidor SMTP está configurado em um servidor web / aplicação, é provavelmente configurado para permitir mail seja enviado via apenas o 127.0.0.1.

Você pode configurar um servidor SMTP local através do Gerenciador do IIS. Se você ir por este caminho, certifique-se a porta 25 é aberta em sua máquina local. Muitas vezes bloco vezes anti-virus tipo de software / monitorar este porto e mucks com entrega de e-mail.

Eu acho que você não está usando a porta não em seu código. Use estas linhas, correio Em seguida, deve ser ido no local também.

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

Isso está funcionando no meu sistema. Espero que ele vai trabalhar também em seu sistema local.

O provedor provavelmente firewalled fora de seu servidor de correio para que ele só está aceitando e-mail de seu ambiente de hospedagem.

Alterar-lo para usar o servidor de correio local quando você está testando-lo localmente.

Você pediu um XP Mail Server. Tente hMailServer

Tenha um olhar para ver se o seu antivírus está ficando louco, eu já vi esse problema algumas vezes com pessoas correndo McAfee.

Espero que isso ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top