プロダクションサーバーからc#とgmailを使用して電子メールを送信できない

私は自分の開発環境(Windows 7、Visual Studio 2010)でこのコードをテストしています。

public static bool SendMail(string to, string subject, string message)
{
    try
    {
        NetworkCredential loginInfo = new NetworkCredential("mylogin","mypassowrd");
        MailMessage msg = new MailMessage();
        msg.From = new MailAddress("mylogin");
        msg.To.Add(new MailAddress(to));
        msg.Subject = subject;
        msg.Body = message;
        msg.IsBodyHtml = true;
        SmtpClient client = new SmtpClient("smtp.gmail.com",587);
        client.EnableSsl = true;
        client.UseDefaultCredentials = false;
        client.Credentials = loginInfo;
        client.Send(msg);

        return true;
    }
    catch (Exception)
    {
        return false;
    }
}

しかし、私はそれを私のプロダクションサーバ(Windowsサーバ2008)に移すとうまくいきません。私の最初の考えは、ファイアウォールがポートをブロックしているため、TCPプロトコルを使用してポート587を開く送信ルールを作成します。 Botこれは動作しません。

どんな洞察にも感謝します。

ありがとう

1
ありがとう、それはISA Serverです。私はちょうどISA上にルールを作成し、それが動作しています。
追加された 著者 roncansan,
さて、falseを返すのではなく、例外をログに記録して、ここに投稿し、私たちがあなたを助けることができるかどうかを見てみましょう
追加された 著者 Pleun,
なぜ動作していないのかについて、より多くの情報を提供してください。エラーメッセージが表示されますか?
追加された 著者 Anders Abel,

1 答え

サーバー上の他のツールからsmtp.gmail.comのポート587にアクセスできることを確認しましたか?実稼働環境では、サーバー上のファイアウォールだけでなく、ネットワーク内のファイアウォールやルーターなど、ポートをフィルタリングできる場所が数多くあります。

アプリケーションのネットワーク接続を確認する1つの方法は、アプリケーションでメールを送信し、同時にサーバーのコンソールで netstat -n コマンドを実行することです。 smtp.gmail.comへの接続が SYN_SENT として固まっていない場合、TCP接続は確立されません。

3
追加された