0

このKB 記事のコードをコピーして、ユーザー情報を少し編集してサンプル プログラムを作成しました。新しい System.Net.Mail は暗黙の SSL をサポートしていないため、非推奨の .NET ライブラリ System.Web.Mail を使用してそれを行います。暗黙の電子メール ポートであるポート 465 で Google smtp サーバーを使用してテストしたところ、すべてが機能しました。ただし、これをクライアントに渡して彼のネットワークでテストすると、何も送受信されません。エラーは次のとおりです。

2013-03-07 15:33:43 - The transport failed to connect to the server.
2013-03-07 15:33:43 -    at System.Web.Mail.SmtpMail.LateBoundAccessHelper.CallMethod(Object obj, String methodName, Object[] args)
2013-03-07 15:33:43 -    at System.Web.Mail.SmtpMail.CdoSysHelper.Send(MailMessage message)
2013-03-07 15:33:43 -    at System.Web.Mail.SmtpMail.Send(MailMessage message)

私は電子メールの SSL に関してはあまり詳しくないので、根本的な原因について考えられる理論を次に示します。

彼が正しい smtp サーバーと正しいポート (SSL ポート) を使用していると仮定すると、次のいずれかが原因ではないかと思います。

  1. 彼らはメール サーバーで SSL を使用していますが、同じドメイン上にあり、送信者として同じ電子メール ドメインを使用しているにもかかわらず、彼が私のプログラムを実行するマシンに証明書がインストールされていません。

  2. 彼らは SSL を使用していますが、プログラムが基本認証を使用しているときに、NTLM または匿名認証を使用している可能性があります。

私自身がこの分野ではかなり外国人であり、まだ調査中であるため、情報が少ない場合は申し訳ありません。

私の小さなテスト プログラムが暗黙の SSL 電子メール サーバーの smtp サーバーを使用して送信できることを確認するために、私が最後に実行できる手順を知っていますか?

編集: SSL を使用していることを示すために、コードに次の行を追加しました。

oMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");
4

2 に答える 2

0

ここでは、c# を使用してメールを送信するために gmail smtp を使用しています。以下のコードを参照してください。それはあなたに洞察を与えます、スタッフがどのように機能しているか。gmail の設定をメール サーバーの設定に置き換えます。セキュリティ証明書について心配する必要はありません。それらはフレームワーク自体によって処理されます。

    public static bool SendMail(string to, string subject, string body)
    {
        bool result;
        try
        {
            var mailMessage = new MailMessage
            {
                From = new MailAddress("your email address")
            };

            mailMessage.To.Add(new MailAddress(to));
            mailMessage.IsBodyHtml = true;
            mailMessage.Subject = subject;
            mailMessage.Body = body;
            var userName = "your gmail username";
            var password = "your gmail password here";
            var smtpClient = new SmtpClient
            {
                Credentials = new NetworkCredential(userName, password),
                Host = smtp.gmail.com,
                Port = 587,
                EnableSsl = true
            };

            smtpClient.Send(mailMessage);
            result = true;
        }
        catch (Exception)
        {
            result = false;
        }
        return result;
    }

あなたが参照していたコードはかなり古く、時代遅れでもありました。CDO は、ASP アプリでメールを送信するために使用されました。下にスクロールして見ていないと思います

Article ID: 555287 - Last Review: April 7, 2005 - Revision: 1.0
APPLIES TO
Microsoft .NET Framework 1.1

あなたはかなり古いコードを参照しています...とにかく表示されたコードに従ってください、すべてがうまくいくでしょう...

アップデート

よく読まなかったのが悪い。しかし

上記のコードはそのままにしておきます。後でgmailまたは他のサーバーを介したSSLを介したメール機能が必要なあなたや他の人の助けになるかもしれません.

. そのような場合は、サードパーティのアプリが必要です。ライブラリを見つけましたこちらをご覧ください

于 2013-03-08T00:07:29.720 に答える