web-dev-qa-db-ja.com

Gmailを介してC#で電子メールを送信する方法

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;
        }
    }
}
12
Johnny

ここに移動してください: 安全性の低いアプリ 、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");
33
Eghbal Sohrabi