16

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

コードは次のとおりです。

  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);

4

4 に答える 4

8

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

  • 保護された接続または保護されていない接続に指定されたポートが間違っているなど、接続設定が正しくありません
  • クレデンシャルが正しくありません。ユーザー名とパスワードの組み合わせを確認して、資格情報が正しいことを確認します。
于 2012-12-10T19:44:46.723 に答える
7

私はあなたが設定する必要があると思いますDeliveryMethod = SmtpDeliveryMethod.Network

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

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

var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@example.com", "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);
}
于 2012-12-08T02:44:15.480 に答える