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);
}
どうして?他にどのような秘密のスイッチを切り替える必要がありますか?
私が見つけた最善の方法は、 SMTP4Dev を使用することでした。これは、電子メールをリッスンし、「送信された」ものを表示しますが、実際には何も送信しません。テストに最適です!
開発目的で、ファイルシステムへのメールの保存を使用します。これをweb.configで試してください。
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="c:\temp\mails\" />
</smtp>
</mailSettings>
申し訳ありませんが、これらの回答のほとんどは完全に混乱しており、問題を説明していません。これが問題です。
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;
IIS7でSMTPサーバーをセットアップする必要があります。セットアップ方法は次のとおりです。
http://learn.iis.net/page.aspx/751/configure-smtp-e-mail-in-iis-7/