web-dev-qa-db-ja.com

リモートサーバーに接続できませんC#

フォルダをスキャンしてファイルをスキャンし、添付ファイルとして電子メールで送信するこのコンソールアプリケーションを作成しました。これは、ローカルマシンで正常に動作します。しかし、別のマシン(テストサーバー)でリモートで実行しようとすると、例外が発生します。

これは私が見る例外です。

 innerException  {System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: An attempt was made to access a socket in a way forbidden by its access permissions *******:25
       at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
       at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
       --- End of inner exception stack trace ---
       at System.Net.ServicePoint.GetConnection(PooledStream PooledStream, Object owner, Boolean async, IPAddress& address, Socket& abortSocket, Socket& abortSocket6)
       at System.Net.PooledStream.Activate(Object owningObject, Boolean async, GeneralAsyncDelegate asyncCallback)
       at System.Net.PooledStream.Activate(Object owningObject, GeneralAsyncDelegate asyncCallback)
       at System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout)
       at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint)
       at System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint)
       at System.Net.Mail.SmtpClient.GetConnection()
       at System.Net.Mail.SmtpClient.Send(MailMessage message)} System.Exception {System.Net.WebException}

これがサーバーではなくローカルマシンで機能する理由がわかりません。それは、Outlookアカウントがサーバーに設定されていないためですか?

これは私のアプリケーションのメールコードです-

public static void SendMailMessage(string file) 
{
    const string subject = "TESTING";
    const string body = "";

    string from = ConfigurationManager.AppSettings["from"];        
    string to = ConfigurationManager.AppSettings["to"];
    var message = new MailMessage(from, to, subject, body);
    message.Attachments.Add(new Attachment(file));
    var client = new SmtpClient("smtp.mail***.com")
    {
        DeliveryMethod = SmtpDeliveryMethod.Network,
        UseDefaultCredentials = true

    };

    try
    {
        client.Send(message);
        Console.WriteLine("Email Successfully sent!");

    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
    }
}
4
user2901683

*ネットワーク資格情報を追加する必要があることを忘れないでください。

 SmtpClient client = new SmtpClient();
        client.Credentials = new    System.Net.NetworkCredential("[email protected]", "patito12");
        client.Port = 587;
        client.Host = "smtp.gmail.com";
        client.EnableSsl = true;
        client.Send(mail);

サーバーポート587がブロックされているため、「リモートサーバーに接続できません」というエラーが発生することがあります。

2
Elenasys

問題は、リモートでデフォルトの資格情報を使用していることです。このような環境ではデフォルトの資格情報にアクセスする方法がないため、リモートサーバーによって拒否されます。これを試してみてください。

 var client = new SmtpClient("smtp.mail***.com",port)
 {  
    NetworkCredentials = new NetworkCredentials("username","password")        
 };
 client.Send();
2
user2905764