1. ホーム
  2. c#

[解決済み】C#でGmailのSMTPサーバーを経由してメールを送信する場合

2022-04-04 20:35:25

質問

なぜか、受理された回答も他の回答も、"には効きません。 .NETでGmailを使ってメールを送信する "です。なぜ動作しないのでしょうか?

UPDATE: 他の質問にあるすべての回答(受け入れられたもの、そうでないもの)を試しましたが、どれもうまくいきません。

そうでなければ、Googleが何かを変更した可能性があります(以前にもありました)。

を使用したコードを試すと SmtpDeliveryMethod.Network で、Send(message)ですぐにSmtpExceptionが発生します。そのメッセージは

SMTPサーバーは安全な接続を要求しているか、クライアントが認証されていません。

サーバーからの応答は

5.5.1 認証が必要です。詳しくはこちら" <-- マジでそこで終わってる。

UPDATE

これはずいぶん前に質問したことで、その回答は、私がさまざまなプロジェクトで何度も何度も使ってきたコードです。

この投稿や他のEmailSenderプロジェクトにあるアイデアの一部を取り入れて CodeplexのEmailSenderプロジェクト . テストしやすいように設計されており、GoDaddyやGmailなど、私のお気に入りのSMTPサービスをサポートしています。

解決するには?

CVertex、あなたのコードを必ず見直して、それで何もわからなければ、投稿してください。私はちょうど私が働いていたテストASP.NETサイトでこれを有効にしていました、そしてそれは動作します。

実は、ある時点で私のコードに問題が発生したんです。コンソールプログラム上でよりシンプルなバージョンにしてみて、それが動作しているのを確認するまで気づきませんでした(あなたが心配していたようなGmail側の変化はありません)。以下のコードは、あなたが参照したサンプルと同じように動作します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("[email protected]", "mypwd"),
                EnableSsl = true
            };
            client.Send("[email protected]", "[email protected]", "test", "testbody");
            Console.WriteLine("Sent");
            Console.ReadLine();
        }
    }
}

また、web.configの組み合わせで動作させました。 http://msdn.microsoft.com/en-us/library/w355a94k.aspx とコード(一致するものがないため EnableSsl を設定ファイルに追加してください。

2021年更新

デフォルトでは、gmail の設定ページ(google.com/settings/security/lesssecureapps)で、「安全性の低いアプリ」(quot; less secure apps)へのアクセスを有効にする必要があります。これは、「サーバーの応答は...」という例外が発生する場合に必要です。5.5.1 認証が必要です。- Ravendarkskyに感謝します。