smtpclientを使用して、localhost iisサイトでメールを送信できません
-
11-07-2019 - |
質問
System.Net.MailからSmtpClientを使用してメールを送信できないローカルのIIS Webサイトで実行されているasp.net mvcアプリがあります。 hotmailアドレスにメールを送信しようとしていますが、ソケット例外が発生します。問題が何であるか考えていますか?
using(var message = new MailMessage())
{
message.From = new MailAddress(AdminEmail);
message.To.Add(new MailAddress(to));
message.Subject = subject;
message.Body = body;
message.IsBodyHtml = false;
var mailClient = new SmtpClient();
mailClient.Send(message);
}
例外は次のとおりです。
{System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:25
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)}
デフォルトのアプリプールにはintepub \ wwwrootへのアクセス権がないと思います。接続をテストしようとしたときに表示されるエラーは次のとおりです。
サーバーは、ビルトインアカウントでパススルー認証を使用して、指定された物理パスにアクセスするように構成されています。ただし、IISマネージャーは、ビルトインアカウントにアクセス権があるかどうかを確認できません。アプリケーションプールIDに物理パスへの読み取りアクセス権があることを確認してください。このサーバーがドメインに参加しており、アプリケーションプールIDがNetworkServiceまたはLocalSystemである場合、\ $が物理パスへの読み取りアクセス権を持っていることを確認します。その後、これらの設定を再度テストします。
解決
Joeの上の私のコメントに対する回答に基づいて、ローカルマシンでSMTPが有効になっていません。 VistaにはSMTPが付属していません。
そのため、Vistaで実行されるサードパーティのSMTPアプリをインストールするか、別のアプリを使用して送信する必要があります。この場合、Hotmailアカウントで送信できます。私はHotmailを使用していないので、Hotmailを使用するかどうかはわかりませんが、smtp.hotmail.comと資格情報のようなものでなければなりません。私のプライマリアカウントはGmailアカウントなので、smtp.gmail.comともちろん、資格情報を使用して使用できます。
他のヒント
ローカルマシンでの開発では、ドロップフォルダーを使用することもできます。
http://www.codersbarn.com /post/2008/11/30/ASPNET-Contact-Form.aspx
SMTPをローカルでセットアップするのではなく、hotmailを介して直接送信するようにSMTP接続を構成して、web.configに構成要素を追加してすべてを有効にします。
編集
しばらく書いたこの記事と思います戻ると役に立つかもしれません。
SmtpClientのホストを明示的に設定してみてください。
例:
SmtpClient mailClient = new SmtpClient();
mailClient.Host =" 127.0.0.1&quot ;;
mailClient.Send(message);