0

次のコードを使用して、メールを送信しようとしています。SMPTClient として別のサーバーを使用しています。

MailMessage message = new MailMessage();
message.To.Add(toEmailId);
message.Subject = "test Subject";
message.From = new System.Net.Mail.MailAddress("myid@xyz.com");
message.Body = "This is a system generated email. Please do not reply";
SmtpClient smtp = new SmtpClient("anotherservername"); 
smtp.Send(message);

デバッグ中に最後の行でエラーが発生します。エラーは次のとおりです。

An attempt was made to access a socket in a way forbidden by its access permissions SERVER IP :25 

インターネットから、ファイアウォールがそのサーバーのポートへのアクセスをブロックしている可能性があること、または見逃した設定があることを知りました。どうやら、そのサーバーにデプロイされたアプリケーションは電子メールを送信できるようです。私はまだテスト用に作成しています。

4

1 に答える 1

0

一部のサーバーは、SMTPに接続する前にPOPサーバーに接続したかどうかを確認することにより、認証と承認を実行します。最初にPOPで接続して認証し、その後SMTPに接続してみてください。

歴史的に、電子メールクライアントは最初にSend&Receiveルーチンで電子メールをチェックしてから送信したため、これは貧弱な承認として使用されていました。SMTP以前のPOPに関するウィキペディアの記事をご覧ください


一部の人々にこれを引き起こした別の問題は、サーバーアドレスがにどのように提供されるかSmtpClientです。IP /ホスト名に追加するのではなく、ポート番号を明示的に提供するコンストラクターを使用する必要があります。つまり

それ以外の new SmtpClient("123.123.123.123:25")

使用する new SmtpClient("123.123.123.123", 25)

于 2012-11-16T17:01:54.150 に答える