web-dev-qa-db-ja.com

System.Net.Mail.SmtpException:SMTPサーバーは安全な接続を必要とするか、クライアントが認証されませんでした

C#アプリケーションから自分のウェブサイトのアドレスをメールで送信しようとしています。
これは、最近まで数か月間問題なく機能しました。 (たぶん私のプロバイダーが何かを変更したり、誰かが設定を変更した)

これがコードです:

_  private void sendEmail(Email invite) {
            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient(smtpServerName);
            mail.From = new MailAddress(emailUsername);

            mail.To.Add(invite.RecipientEmail);
            mail.Subject = invite.MessageSubject;
            mail.Body = invite.MessageBody;

            SmtpServer.UseDefaultCredentials = false;
            SmtpServer.Port = 587;
            SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);
//          SmtpServer.EnableSsl = true;
            SmtpServer.Send(mail);
        }  
_

ここにエラーがあります:

SMTPサーバーは安全な接続を必要とするか、クライアントが認証されませんでした。サーバーの応答:SMTP認証が必要です。

他の質問を見て、私は彼らが提案したことを試して、_SmtpServer.EnableSsl = true_にしました。これはまったく機能しませんでした。それは以下を与えました:

System.Net.Mail.SmtpException:サーバーは安全な接続をサポートしていません。

SSLを無効にして、以前と同じようにする必要があると思います。

メール送信を再度機能させる方法はありますか?

[〜#〜]編集[〜#〜]
私は_SmtpServer.UseDefaultCredentials = false;_なしで試しました
私はそれをtrueに設定して試しました:_SmtpServer.UseDefaultCredentials =true;_
その行に次のコメントを付けてコメントしてみました//SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);

15
Adrian

このエラーメッセージは通常、次のいずれかが原因で発生します。

  • 保護された接続または保護されていない接続に指定された間違ったポートなど、不正な接続設定
  • 資格情報が正しくありません。ユーザー名とパスワードの組み合わせを確認して、資格情報が正しいことを確認します。
7
Reed Copsey

DeliveryMethod = SmtpDeliveryMethod.Networkを設定する必要があると思います

これは現在、私のPCで動作しています。チェックしただけです。

using System.Net;
using System.Net.Mail;

var fromAddress = new MailAddress("[email protected]", "From Name");
var toAddress = new MailAddress("[email protected]", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";

var smtp = new SmtpClient
           {
               Host = "smtp.gmail.com",
               Port = 587,
               EnableSsl = true,
               DeliveryMethod = SmtpDeliveryMethod.Network,
               UseDefaultCredentials = false,
               Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
           };
using (var message = new MailMessage(fromAddress, toAddress)
                     {
                         Subject = subject,
                         Body = body
                     })
{
    smtp.Send(message);
}
8
Ravindra Bagale

ユーザー名とパスワードは正しいが、それでもエラーが発生する場合は、Gmailがアプリケーションをブロックしていることを意味します。

Gmailアカウントに関連する次のリンク の[オンにする]ラジオボタンをオンにする必要があります。その後、正常に動作します。

2