Webサービスを介して電子メールを送信しようとすると、エラーが発生します。安全性の低いアプリへのアクセスを有効にして、2段階認証を無効にし、ウェブブラウザ経由でアカウントにログインしようとしました。 SOの解決策のどれも私のために働いていません。私はまだ得ています:
エラー:System.Net.Mail.SmtpException:SMTPサーバーには安全な接続が必要であるか、クライアントが認証されていません。サーバーの応答は次のとおりです。5.5.1認証が必要です。
この問題を解決するにはどうすればよいですか?
namespace EmailService
{
public class Service1 : IService1
{
public string SendEmail(string inputEmail, string subject, string body)
{
string returnString = "";
try
{
MailMessage email = new MailMessage();
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
// set up the Gmail server
smtp.EnableSsl = true;
smtp.Port = 587;
smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "mypassword");
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.UseDefaultCredentials = false;
// draft the email
MailAddress fromAddress = new MailAddress("[email protected]");
email.From = fromAddress;
email.To.Add(inputEmail);
email.Subject = body;
email.Body = body;
smtp.Send(email);
returnString = "Success! Please check your e-mail.";
}
catch(Exception ex)
{
returnString = "Error: " + ex.ToString();
}
return returnString;
}
}
}
ここに移動してください: 安全性の低いアプリ 、C#コードでメールを送信するために使用するメールとパスワードを使用してログオンし、Turn On
。
また、このリンクにアクセスして、をクリックしてください続行Googleアカウントへのアクセスを許可
また、私はそれを少し編集します:
public string sendit(string ReciverMail)
{
MailMessage msg = new MailMessage();
msg.From = new MailAddress("[email protected]");
msg.To.Add(ReciverMail);
msg.Subject = "Hello world! " + DateTime.Now.ToString();
msg.Body = "hi to you ... :)";
SmtpClient client = new SmtpClient();
client.UseDefaultCredentials = true;
client.Host = "smtp.gmail.com";
client.Port = 587;
client.EnableSsl = true;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Credentials = new NetworkCredential("[email protected]", "YourPassword");
client.Timeout = 20000;
try
{
client.Send(msg);
return "Mail has been successfully sent!";
}
catch (Exception ex)
{
return "Fail Has error" + ex.Message;
}
finally
{
msg.Dispose();
}
}
上記のコードが機能しない場合は、次のコードのように変更してみてください。
SmtpClient client = new SmtpClient();
client.Host = "smtp.gmail.com";
client.Port = 587;
client.EnableSsl = true;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("[email protected]", "YourPassword");