145

アプリケーションからメールを送信したいのですが、メールを送信するための次のコードを書きました

    MailMessage msg = new MailMessage();

    msg.From = new MailAddress("mymailid");
    msg.To.Add("receipientid");
    msg.Subject = "test";
    msg.Body = "Test Content";
    msg.Priority = MailPriority.High;

    SmtpClient client = new SmtpClient();

    client.Credentials = new NetworkCredential("mymailid", "mypassword", "smtp.gmail.com");
    client.Host = "smtp.gmail.com";
    client.Port = 587;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.EnableSsl = true;
    client.UseDefaultCredentials = true;

    client.Send(msg);

私はそれをlocalhostで実行しているので、送信するのに何の間違いがありますか。

ボタンを送信すると、次のようなエラーが発生します

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

Web.config ファイルのコード

 <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />   
    <add key="smtpServer" value="smtp.gmail.com" />
    <add key="EnableSsl" value = "true"/>
    <add key="smtpPort" value="587" />
    <add key="smtpUser" value="sender@gmail.com" />
    <add key="smtpPass" value="mypassword" />
    <add key="adminEmail" value="sender@gmail.com" />
  </appSettings>
  <system.net>
    <mailSettings>
      <smtp from="sender@gmail.com">
        <network host="smtp.gmail.com" password="mypassword" port="587" userName="sender@gmail.com"  enableSsl="true"/>
      </smtp>
    </mailSettings>
  </system.net>

このエラーを解決してメールを送信するにはどうすればよいですか??

4

27 に答える 27

207

私も同じ問題を抱えてる。

私はこの解決策を見つけました:

Google は、最新のセキュリティ標準を使用していない一部のアプリまたはデバイスからのログイン試行をブロックする場合があります。これらのアプリやデバイスは侵入されやすいため、ブロックすることでアカウントを安全に保つことができます。

最新のセキュリティ基準をサポートしていないアプリの例としては、次のものがあります。

  • iOS 6 以下の iPhone または iPad のメール アプリ
  • 8.1 リリースより前の Windows Phone のメール アプリ
  • Microsoft Outlook や Mozilla Thunderbird などの一部のデスクトップ メール クライアント

したがって、Google アカウントで安全性の低いサインイン(または安全性の低いアプリ アクセス) を有効にする必要があります。

Google アカウントにサインインした後、次の場所に移動します。

https://www.google.com/settings/security/lesssecureapps
または
https://myaccount.google.com/lesssecureapps

C# では、次のコードを使用できます。

using (MailMessage mail = new MailMessage())
{
    mail.From = new MailAddress("email@gmail.com");
    mail.To.Add("somebody@domain.com");
    mail.Subject = "Hello World";
    mail.Body = "<h1>Hello</h1>";
    mail.IsBodyHtml = true;
    mail.Attachments.Add(new Attachment("C:\\file.zip"));

    using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
    {
        smtp.Credentials = new NetworkCredential("email@gmail.com", "password");
        smtp.EnableSsl = true;
        smtp.Send(mail);
    }
}
于 2014-08-09T06:20:19.193 に答える
83

まず、Gmail のセキュリティ関連の問題を確認します。Gmail で二重認証を有効にしている可能性があります。また、セキュリティ アラートが表示されている場合は、Gmail の受信トレイを確認してください。そのような場合は、以下のように@mjbの他の回答を確認してください

以下は、そのような問題について私が常に最初にチェックする非常に一般的なことです

client.UseDefaultCredentials = true;

false に設定します。

@Joe Kingの答えに注意してください-client.Credentialsを設定する前にclient.UseDefaultCredentialsを設定する必要があります

于 2013-08-29T06:16:31.333 に答える
13

Gmail アカウントにログインしてみてください。gmail SMTP を使用してメールを送信するとロックされます。ロックされる前に送信できるメールの制限はわかりませんが、一度ログインすると、コードから再び機能します。webconfig の設定が適切であることを確認してください。

于 2013-10-23T03:57:42.283 に答える
11

この方法で試してみてください。いくつかの簡単な変更を加えただけです。

MailMessage msg = new MailMessage();

msg.From = new MailAddress("mymailid@gmail.com");
msg.To.Add("receipientid@gmail.com");
msg.Subject = "test";
msg.Body = "Test Content";
//msg.Priority = MailPriority.High;


using (SmtpClient client = new SmtpClient())
{
    client.EnableSsl = true;
    client.UseDefaultCredentials = false;
    client.Credentials = new NetworkCredential("mymailid@gmail.com", "mypassword");
    client.Host = "smtp.gmail.com";
    client.Port = 587;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;

    client.Send(msg);
}

メール設定がある場合は、app.config ファイルも表示してください。

于 2013-08-29T13:51:05.770 に答える
8

このリンクから安全性の低いアプリをオンにするとブーム...

于 2016-06-24T07:50:41.757 に答える
7

安全性の低いアプリへのアクセスを許可するを有効にしてみてください。

ここでは、Gmail でログインした後、安全性の低いアプリを有効にすることができます。

https://myaccount.google.com/lesssecureapps

ありがとう。

于 2018-10-20T12:54:16.710 に答える
3

「UseDefaultCredentials」を false に設定しても、同じ問題が発生しました。後で、根本的な原因は、アカウントで「2 段階認証プロセス」をオンにしたことであることがわかりました。オフにした後、問題はなくなりました。

于 2014-07-14T16:15:29.557 に答える
1

新しい Google アカウントの場合は、通常のユーザー インターフェースからメール (最初のメール) を送信する必要があります。その後、アプリケーション/ロボットを使用してメッセージを送信できます。

于 2016-03-15T17:33:48.233 に答える
1

以下は私のコードです。私も同じエラーがありましたが、問題はパスワードを間違えたことでした。以下のコードは完全に機能します..試してみてください

            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");              
            mail.From = new MailAddress("fromaddress@gmail.com");
            mail.To.Add("toaddress1@gmail.com");
            mail.To.Add("toaddress2@gmail.com");
            mail.Subject = "Password Recovery ";
            mail.Body += " <html>";
            mail.Body += "<body>";
            mail.Body += "<table>";

            mail.Body += "<tr>";
            mail.Body += "<td>User Name : </td><td> HAi </td>";
            mail.Body += "</tr>";

            mail.Body += "<tr>";
            mail.Body += "<td>Password : </td><td>aaaaaaaaaa</td>";
            mail.Body += "</tr>";

            mail.Body += "</table>";
            mail.Body += "</body>";
            mail.Body += "</html>";

            mail.IsBodyHtml = true;
            SmtpServer.Port = 587;
            SmtpServer.Credentials = new System.Net.NetworkCredential("sendfrommailaddress.com", "password");
            SmtpServer.EnableSsl = true;

            SmtpServer.Send(mail);

メール送信で参照できます

于 2014-05-13T02:17:46.663 に答える
1

テスト環境にいて、セキュリティ設定を設定したくない場合は、安全性の低いアプリを許可する必要があります。Gmail のこのリンク。

https://myaccount.google.com/lesssecureapps

于 2020-07-06T08:33:00.007 に答える
1

構成ファイルで SMTP 構成データを指定し、コードで上書きしないようにすることを検討する必要があります。http: //www.systemnetmail.com/faq/4.1.aspx の SMTP 構成データを参照してください。

<system.net>
            <mailSettings>
                <smtp deliveryMethod="Network" from="admin@example.com">
                    <network defaultCredentials="false" host="smtp.example.com" port="25" userName="admin@example.com" password="password"/>
                </smtp>
            </mailSettings>
        </system.net>
于 2016-06-11T05:23:11.383 に答える
0

1) ユーザーまたはパスが間違っている 2) SSL を有効にしていない 3) 安全性の低いアプリが有効になっていない 4) このメールでサーバーにログインしていない 5) client.UseDefaultCredentials = false を設定していない

于 2021-04-19T20:41:56.493 に答える