web-dev-qa-db-ja.com

IIS7を介して電子メールを送信する方法は?

IIS7のWindows7マシンにSMTPサーバーをセットアップしようとしています。 「電子メールをローカルホスト、ポート25、認証なしに配信する」に設定しました。しかし、C#プログラムからプログラムで接続しようとすると、エラーが発生します。

メール送信の失敗」、内部例外「ターゲットマシンがアクティブに拒否したため、接続できませんでした127.0.0.1:25

public static void SendEmail(MailMessage m) {
  var smtp = new SmtpClient {
    Host = "localhost",
    Port = 25,
    UseDefaultCredentials = true,
  };
  smtp.Send(m);
}

どうして?他にどのような秘密のスイッチを切り替える必要がありますか?

15
Shaul Behr

私が見つけた最善の方法は、 SMTP4Dev を使用することでした。これは、電子メールをリッスンし、「送信された」ものを表示しますが、実際には何も送信しません。テストに最適です!

5
Shaul Behr

開発目的で、ファイルシステムへのメールの保存を使用します。これをweb.configで試してください。

<mailSettings>
  <smtp deliveryMethod="SpecifiedPickupDirectory">
    <specifiedPickupDirectory pickupDirectoryLocation="c:\temp\mails\" />
  </smtp>
</mailSettings>
12
Antonio Bakula

申し訳ありませんが、これらの回答のほとんどは完全に混乱しており、問題を説明していません。これが問題です。

IIS 7、Windows 7ProfessionalとWindowsServer 2008のような「実際の」Webサーバーの両方での「SMTP電子メール」は、SMTP電子メールが真の「仮想SMTPサーバー」ではないことです。またはMicrosoftが「SimpleMailTransfer Protocol(SMTP)」と呼んでいるもの。これは、SMTPサーバーにオンラインでアプリを送信できるようにする単なるインターフェイスです。以前のWindowsで使用していた仮想SMTPサーバーは、現在、追加としてのみ使用できます。管理ツールの下の「サーバーマネージャー」を使用し、「機能の追加」をクリックしてサーバーオペレーティングシステム上でオンにします。これは、Windows 7 Professionalなどでは見つかりません。さらに別のMicrosoftの失敗です!

ただし、開発中のIIで「SMTP電子メール」を使用したり、Webサーバーでメールを実際のSMTPサーバーにルーティングしたりすることもできます。両方が同じであり、テストのために電子メールを送信してローカルボックスなどに戻すことができた昔とは異なります。彼らはあなたにそれをローカルに保存させますが、それは私にはあまり役に立ちません。そのため、SMTP電子メールでは「localhost」が機能しません。それはほとんどの人が言っていることです。そのためには、サードパーティのソフトウェアをインストールする必要があります。より良い解決策は、仮想サーバーとサーバーOS上にあるすべてのWebサーバーグッズを含むWindows Server管理パックを入手し、それをインストールすることです。 http://www.sysprobs.com/install-admin- pack-windows-7-remote-desktop-manager

実際のSMTPサービス(「mail.yourwebhost.com」など)へのアドレスがある限り、ローカルボックスまたはサーバーのいずれかで実際のSMTP仮想サーバーを実行する必要はないことに注意してください。 IIS7の下で、IIS7の下のSMTP電子メール部分をクリックしてアドレスを入力するだけです。しかし、「localhost」は機能しません。リモートホストでSMTP電子メールを使用すると、ほとんどのSMTPまたは電子メールプロバイダーが「25」以外のポートとSMTP電子メールの下にあるカスタム認証資格情報を追加するという2つの追加のものを必要とすることがわかりました。 Network Solutionsは、ログインに電子メールアドレスとアドレスパスワードを使用するのが好きです。私はそれをすべて接続し、メールc#オブジェクトがローカルボックスに仮想SMTPサーバーなしでメールを送信しました。最後のトリックは、これもc#コードに追加することです。

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(
        "mail.yourhost.com",155);//add custom port here
//This object stores the authentication values
System.Net.NetworkCredential mycredentials = new System.Net.NetworkCredential(
        "[email protected]", "passwordhere");
client.UseDefaultCredentials = false;
client.Credentials = mycredentials;
11
Mitch Stokely

IIS7でSMTPサーバーをセットアップする必要があります。セットアップ方法は次のとおりです。

http://learn.iis.net/page.aspx/751/configure-smtp-e-mail-in-iis-7/

3
ShahidAzim