6

hmailserverにC#プログラムからメールを送信させようとしています。私を殺しているのはSSLの部分です。

私はもともとこのエラーが発生しました:The SMTP server requires a secure connection or the client was not authenticated. The server response was: SMTP authentication is required.

だから私は追加しました:smtp.EnableSsl = true; そして今、私はServer does not support secure connections.

これが私のコードです、これは私を狂わせています。独自のSSLを作成する必要がありますか、それともhmailserver側でSSLを無効にする方法はありますか?

MailMessage mail = new MailMessage("jlnt@ademo.net", "com", "NEW Item", emailBody);
SmtpClient smtp = new SmtpClient("1.1.1.250");
smtp.Port = 25;
NetworkCredential login = new NetworkCredential("ja@test.net", "dg");
smtp.Credentials = login;
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = false;
smtp.Send(mail);
4

5 に答える 5

6

ああ、あなたがしなければならないことは、HMailServerでadvanced-iprangesに行くことです。新しいIP範囲を作成します。たとえば、192.168.1.2の場合は、範囲を192.168.1.1〜192.168.1.3にする必要があります。次に、下部にある必要なすべてのSMTP認証ボックスのチェックを外します。

迷惑...

于 2013-02-11T00:59:31.263 に答える
0

電子メールプロバイダーを介して電子メールを送信するための安全な接続を有効にするには、ポート番号を変更する必要があります。

       MailMessage mail = new MailMessage("jlnt@ademo.net", "com", "NEW Item", emailBody);
        SmtpClient smtp = new SmtpClient("1.1.1.250");
        //smtp.Port =25;
        smtp.Port =587;
        NetworkCredential login = new NetworkCredential("ja@test.net", "dg");
        smtp.Credentials = login;
        smtp.EnableSsl = true;
        smtp.UseDefaultCredentials = false;
        smtp.Send(mail);   
于 2013-02-11T01:12:07.010 に答える
0

私はこの問題を抱えていました、私がしたことはlocalhostipとEnableSslをfalseに使用しました

SmtpClient smtpClient = new SmtpClient();
            smtpClient.Host = "127.0.0.1";
            smtpClient.Credentials = new NetworkCredential("test@123test.com", "pass123");
            smtpClient.EnableSsl = false;

         // then your other statements like: from, to, body, to send mail

このガイドは、上記で使用したようにHMailServerでカスタムNetworkCredentialsを設定するのに役立ちます。誰かが役立つことを願っています。

于 2015-03-01T10:40:28.103 に答える
0

C#からの電子メール送信で動作するようにhMailServerを構成しようとしたときに、この質問に遭遇しました。私は以下を試しました:

  • C#SmtpClient-暗黙のSSLでは機能しません-この質問と回答を参照してください
  • ここからのAegisImplicitMail -UTF-8文字列で機能させることができませんでした(文字列に発音区別符号があります)
  • ここからのMailKit-非常に強力で成熟しており、問題なく使用できます

私は次のことを目指しました:

  • まともなセキュリティ
  • 主流の電子メールプロバイダー(Google、Yahooなど)に電子メールを送信し、受信トレイに到達できる
  • 主流の電子メールプロバイダーから電子メールを受信できること

C#コード

    public void MailKitSend(string senderEmail, string senderName, string subject, string bodyText, string receivers, string receiversCc)
    {
        // no receivers, no e-mail is sent
        if (string.IsNullOrEmpty(receivers))
            return;

        var msg = new MimeMessage();
        msg.From.Add(new MailboxAddress(Encoding.UTF8, senderName, senderEmail));
        msg.Subject = subject;
        var bb = new BodyBuilder {HtmlBody = bodyText};
        msg.Body = bb.ToMessageBody();

        IList<string> receiversEmails = receivers.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries).ToList();
        foreach (string receiver in receiversEmails)
            msg.To.Add(new MailboxAddress(Encoding.UTF8, "", receiver));

        if (!string.IsNullOrEmpty(receiversCc))
        {
            IList<string> receiversEmailsCc = receiversCc.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries).ToList();
            foreach (string receiverCc in receiversEmailsCc)
                msg.Cc.Add(new MailboxAddress(Encoding.UTF8, "", receiverCc));
        }

        try
        {
            var sc = new MailKit.Net.Smtp.SmtpClient();
            if (!string.IsNullOrWhiteSpace(SmtpUser) && !string.IsNullOrWhiteSpace(SmtpPassword))
            {
                sc.Connect(SmtpServer, 465);
                sc.Authenticate(SmtpUser, SmtpPassword);
            }

            sc.Send(msg);
            sc.Disconnect(true);
        }
        catch (Exception exc)
        {
            string err = $"Error sending e-mail from {senderEmail} ({senderName}) to {receivers}: {exc}";
            throw new ApplicationException(err);
        }
    }

hMailServer構成

1)開いているポート-25、143、465、995を開いて、電子メールを送受信できるようにします

2)TCP/IPポートの構成

SMTP / 0.0.0.0 / port 25 / no security (allow receiving start process)
SMTP / 0.0.0.0 / port 465 / SSL/TLS security (must define a SSL certificate)
POP3 / 0.0.0.0 / port 995 / SSL/TLS security (use the same SSL certificate)

3)C#テスト前

hMailServerAdministratorから診断を実行します

各プロトコルのポート、セキュリティなど、さまざまな設定を手動で構成できる電子メールクライアントを使用してください。私はサンダーバードを使用しました。外部プロバイダーへの電子メールの送信と外部プロバイダーからの電子メールの受信を含めます(私はGmailで試しました)。

私はIP範囲に変更を加えず、暗黙の範囲(私のコンピューターとインターネット)を残しました。

于 2016-12-24T07:54:20.690 に答える
0

承認された回答が投稿されてから7年が経過しましたが、最初も賛成しましたが、提案された解決策では、不要な認証プロセス全体が無効になることを強調したいと思います。問題は次の行です:

smtp.UseDefaultCredentials = false;

その行を削除するだけで、機能するはずです。

私はここに私のための実用的な解決策を投稿します(私はSSLを使用していないことに注意してください):

    MailMessage mail = new MailMessage("a1@test.com", "foooo@gmail.com");
    SmtpClient client = new SmtpClient();
    client.Credentials = new NetworkCredential("a1@test.com", "test");
    client.Port = 25;
    client.EnableSsl = false;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.UseDefaultCredentials = false;
    client.Host = "...IPv4 Address from ipconfig...";
    mail.Subject = "this is a test email.";
    mail.Body = "this is my test email body";
    client.Send(mail);
于 2018-03-15T11:19:25.240 に答える