2

ローカルの電子メールで従業員に通知を送信する必要があるプロジェクトがあります。SmtpClient クラスを使用してメールを送信しましたが、機能しませんでした。コードは次のとおりです。

    MailMessage message = new MailMessage();

    message.From = new MailAddress("localmail1@company.com");
    message.To.Add(new MailAddress("localmail2@company.com"));
    message.Subject = "Sending mail";
    message.Body = "Check sending email by Exchange from asp.net code <> ";

    SmtpClient client = new SmtpClient("ExchangeDNS", 25);

    try
    {
        client.Send(message);
    }
    catch (Exception exc)
    {
        Label1.Text = exc.Message.ToString();
    }  

ボタンをクリックするSmtpExceptionと、メッセージが表示されます:Failure sending mail.

注: Exchange サーバーを使用しています。

どうすれば解決できますか?

4

3 に答える 3

4

ExchangeDNS.example.com など、サーバーの完全修飾名を使用します。それでもうまくいかない場合は、IP アドレスを試してください。可能かどうかを確認するためだけに、Exchange サーバーのポート 25 に手動で telnet 接続することをお勧めします。また、サーバーが認証または暗号化された接続を必要とするかどうかを確認してください。その場合は、SSL とセキュア ポートを使用するように要求または変更で資格情報を提供する必要があります。

于 2009-02-17T12:44:25.017 に答える
1

あなたのコードは問題ありません。疑わしいのは、Exchange サーバーの構成です。Exchange 管理者向けのいくつかのオプション:

  • 匿名の SMTP 接続を許可します。
  • IP をホワイトリストに登録して、Web サーバーのみがこの方法でメールを送信できるようにします。
  • Web サーバー用の Active Directory アカウントを作成し、ユーザー名とパスワードを使用してクラスを認証します。

Exchange の構成に関する詳細を投稿していただければ、「プログラミング関連ではない」という理由でこの質問がダウンモッドになる危険を承知でお手伝いできます。

于 2009-02-17T13:09:00.357 に答える
1

サーバーと必要な資格情報が正しいと仮定すると (これらを再確認してください) 、SMTP クライアントのタイムアウトを増やしてみます。

于 2009-02-17T12:39:06.137 に答える