単一のコンソール アプリケーションを作成しました (サイト コードの一部にすぎませんが、別の場所でも動作する必要があり、サイト内と同じエラー結果になります) (C#):
MailMessage message = new MailMessage("login@ourDomenInPunycode", "toMail")
{
Subject = "Hello",
Body = "Hello world"
};
SmtpClient client = new SmtpClient();
client.Host = "ourIP";
client.Credentials = new System.Net.NetworkCredential("login@ourDomenInPunycode", "ourPassword");
client.Port = 25;
client.UseDefaultCredentials = false;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Send(message);
では、電子メールを送信することは些細なことではないでしょうか? しかし、ローカル マシンからメール サーバーを介して (このコンソール アプリケーションを実行しているだけで) メールを送信すると、次の例外が表示されます。
System.Net.Mail.SmtpFailedRecipientException: メールボックスを利用できません。サーバーの応答は次のとおりでした: 5.7.1 Relaying to denied (authentication required)
「login@ourDomenInPunycode」データを自分のメールボックス (gmail などでも構いません) に変更すると、すべて正常に動作します。「toMail」アドレスにも依存しません。
では、メール サーバーの何が問題になっているのでしょうか。特別な設定はありますか?別の Windows Server 2008 内で仮想化された Windows Server 2008 と、仮想 Windows Server 2008 のメール サーバーとして Kerio Connect 7 を使用しています。
SmtpClient の設定についてインターネットで読んだすべての記事には、これらの (上記の) 些細な設定とコードしかなく、特別なことは何もありません。
アップデート
上記のテキストでいくつかの修正を行いました。
これは、メールサーバーの仮想 PC から起動したコンソールアプリケーション (上記の「ourIP」に関連する「mail.ourDomen.local」) からメールを送信しようとしたときのメールサーバーのログの一部です。
Task 215 handler BEGIN
Task 215 handler starting
SMTP server session begin; client connected from mail.ourDomen.local:49399
Sent SMTP greeting to mail.ourDomen.local:49399
Command EHLO OurMailServer
Sent reply to EHLO: 250 mail.ourDomenInPunycode ...
Command MAIL FROM:<login@ourDomenInPunycode>
Sent reply to MAIL: 250 2.1.0 Sender <login@ourDomenInPunycode> ok
Command RCPT TO:<toMail>
Sent reply to RCPT: 550 5.7.1 Relaying to <toMail> denied
Connection to SMTP server mail.ourDomen.local lost: connection closed by remote host.
SMTP server session end
Task 215 handler END
「RCPT に返信を送信しました: 550 5.7.1 中継が拒否されました」 - なぜこれが起こったのですか?