MVC .NET Webアプリケーションがあり、現在1年の大部分が安定して動作しています。しかし、今日、エラーコードが表示され、問題の解決方法を見つけることができません。
アプリケーションでは、SMTPClientを使用してメールを送信します。これには、Outlookの電子メールアカウントを使用します。これは今日まで問題なく機能していました。私が得るエラーコードはこれです:
メールボックスを使用できません。サーバーの応答は次のとおりでした:5.3.4 554-554 5.2.0 STOREDRV.Deliver;配信結果バナー
これが、アプリケーションで使用するコードです。
_var client = new SmtpClient
{
Host = WebConfigurationManager.AppSettings["EmailHost"],
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new System.Net.NetworkCredential(WebConfigurationManager.AppSettings["EmailSender"],
WebConfigurationManager.AppSettings["EmailSenderPassword"])
};
_
WebConfigurationManager.AppSettings ["EmailHost"]は、webconfigでsmtp.live.comに設定されています。
この後、もちろん必要なデータやその他の情報を追加しますが、それは省略しました。コードの最後の部分に到達すると、エラーがスローされます。 client.Send(mail);
これまでに試してみましたが、うまくいきませんでした。
SOおよびその他の類似または同じエラーコードを持つWebサイトにいくつかの投稿を見ました。しかし、それらは未回答になるか、メールアカウントへのログインを解決策としてマークします。私のために働きます。
メールアカウントにログインすると、Microsoftから新しいプライバシーとセキュリティの更新についての更新通知が届きました。 9月16日からです。同意する必要がある期間が3か月かどうかはわかりません。しかし、1週間前にメールアカウントからメールが送信され、昨日は送信に失敗しました。合意ポップアップに同意しましたが、まだ機能していません。
私が今何を試すことができるか、このエラーの原因は何ですか?
OK、私は私のシステムでこの問題を次のように解決しました:
次のように、送信元のアカウントとは異なるメールアドレスでメッセージを送信していました。
string from = "[email protected]";
だから私はそれを次のように変更しました:
string from = "[email protected]";
だから今はうまくいく...幸せな日
MailMessage mail = new MailMessage(from, to);
5.2.0 STOREDEV
の応答は、電子メールサーバーのSPFが原因です。 https://en.wikipedia.org/wiki/Sender_Policy_Framework
ここで何が起こったかというと、[email protected]
からメールを送信すると、メールサーバーはそのメールが正当なものであることを認証しようとします。 somwhere.com
を所有していないため、somwhere.com
からのメールを送信することを許可されているIPはsomwhere.com
に尋ねられます。完全にスパムとして拒否しました。
したがって、メールを[email protected]
に変更した場合、OutlookのSPFはそれをスパムとして拒否せず、正常に処理されました。
私のシステムでは、この問題を次のように解決しました:差出人アドレスは、以下のようなメールである必要があります。サーバードメインおよびポートとしてのcom」は587です。ファイアウォールに問題がある場合は、ファイアウォールに同じポート587のルールを追加できます。