2012-01-20 3 views
0

私はC#サービスチェッカープログラムを持っています。 exeは、多数の引数(例えば、チェックしたいサービスの数、サービス表示名の文字列など)とemailTo、emailFrom、emailServerなどの引数を渡すバットファイルから開始されます。サービスが実行されていない場合、電子メールが送信されます。これは、電子メールの一部のコードです:私はとしてemailServerを使用する1台のサーバだから、サーバー上でプログラムを実行しているときのメールの例外?

MailMessage mail = new MailMessage(emailFrom, emailTo); 
SmtpClient SMTP = new SmtpClient(emailServer); 
if (emailUser != "") 
{ 
    SMTP.Credentials = new NetworkCredential(emailUser, emailPass); 
} 
mail.Subject = "The " + service + " service has stopped running"; 
mail.Body = "Please take a look into the " + 
      service + " service and think about restarting."; 

SMTP.Send(mail); 

「localhost」をbatファイルでは、渡されたと、それを実行したとき、私はチェックしていますサービスは、実行されていない場合電子メールは正常に送信され、すべてが機能しています。しかし、別のサーバでは、私はemailServerとして "localhost"を使用しますが、私はbatファイルを実行します。 System.Net.Mail.Smtp.Exception [8012]というエラーが発生し、電子メールは送信されません。これは、私の問題の原因となっているプログラムではなく、サーバ上で設定されているものですか(サーバ設定は私の強力な領域ではありません)。

ありがとうございました。

+1

あなたの関数の周りに 'try ... catch(Exception ex)'を使って 'ex.Message'を表示してください。 – Marco

+1

サービスアカウントはsmtpサーバにアクセスできますか? – KMan

答えて

0

プログラムが失敗したサーバー上で電子メールサーバーが実行されていますか? localhost(プログラムが実行されているコンピュータ)に電子メールを送信しようとしています。 SMTPポート25がそのマシンで応答しない場合、電子メールは配信されません。

emailServerの場合、電子メールを受け入れて処理できるネットワーク上のコンピュータのホスト名を指定する必要があります。通常、そのコンピュータの名前にはlocalhostを使用しません。

+0

ありがとうマーティン - ちょうどそこにプログラムがこのサーバで動くことができないようにサーバに電子メールサーバがないことがわかった。ありがとう。 –

+0

電子メールを送信するためにローカル電子メールサーバーは必要ありません。あなたのネットワークのどこかで電子メールを処理できるサーバがあると仮定すると、そのサーバを 'emailServer'として指定する必要があります。 –

+0

私の会社のメールサーバーは "mail.mycompany.com"ですが、問題はこれが外部企業のためです - リモートデスクトップをサーバー(Windows 2003 Server)に接続していてlocalhostが疲れましたが、私は彼らのemailServerが何であるか知りません。私は自分のコパニーズを使えないと思いますか? –

関連する問題