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);
このエラーメッセージは通常、次のいずれかが原因で発生します。
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);
}
ユーザー名とパスワードは正しいが、それでもエラーが発生する場合は、Gmailがアプリケーションをブロックしていることを意味します。
Gmailアカウントに関連する次のリンク の[オンにする]ラジオボタンをオンにする必要があります。その後、正常に動作します。