From 22f95652845fbed0077dc13be6175f4d8a6f7cf5 Mon Sep 17 00:00:00 2001 From: yangjian Date: Fri, 13 Jan 2023 14:03:45 +0800 Subject: [PATCH 1/5] =?UTF-8?q?smtp=E8=BF=9E=E6=8E=A5=20=E5=8A=A0=E4=B8=8A?= =?UTF-8?q?timeout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/NETCore.MailKit/Core/EmailService.cs | 14 ++++++- src/NETCore.MailKit/MailKitProvider.cs | 53 ++++++++++++++---------- 2 files changed, 44 insertions(+), 23 deletions(-) diff --git a/src/NETCore.MailKit/Core/EmailService.cs b/src/NETCore.MailKit/Core/EmailService.cs index f1efb3f..4b02ac3 100644 --- a/src/NETCore.MailKit/Core/EmailService.cs +++ b/src/NETCore.MailKit/Core/EmailService.cs @@ -2,6 +2,7 @@ using MimeKit.Text; using NETCore.MailKit.Infrastructure.Internal; using NETCore.MailKit.Shared; +using System; using System.IO; using System.Linq; using System.Text; @@ -297,7 +298,18 @@ private void SendEmail(string mailTo, string mailCc, string mailBcc, string subj using (var client = _MailKitProvider.SmtpClient) { - client.Send(mimeMessage); + try + { + client?.Send(mimeMessage); + } + catch (Exception ex) + { + throw ex; + } + finally + { + client?.Disconnect(true); + } } } } diff --git a/src/NETCore.MailKit/MailKitProvider.cs b/src/NETCore.MailKit/MailKitProvider.cs index de4feb7..af23899 100644 --- a/src/NETCore.MailKit/MailKitProvider.cs +++ b/src/NETCore.MailKit/MailKitProvider.cs @@ -37,32 +37,41 @@ private Lazy lazySmtpClient() private SmtpClient InitSmtpClient() { - var client = new SmtpClient(); - - client.ServerCertificateValidationCallback = (s, c, h, e) => true; - - - if (!Options.Security) + try { - client.Connect(Options.Server, Options.Port, SecureSocketOptions.None); + var client = new SmtpClient(); + + //设置timeout 避免长时间的等待 + client.Timeout = 5000; + client.ServerCertificateValidationCallback = (s, c, h, e) => true; + + + if (!Options.Security) + { + client.Connect(Options.Server, Options.Port, SecureSocketOptions.None); + } + else + { + // fix issue #6 + client.Connect(Options.Server, Options.Port, SecureSocketOptions.Auto); + } + + // Note: since we don't have an OAuth2 token, disable + // the XOAUTH2 authentication mechanism. + client.AuthenticationMechanisms.Remove("XOAUTH2"); + + // user login smtp server (fix issue #9) + if (!string.IsNullOrEmpty(Options.Account) && !string.IsNullOrEmpty(Options.Password)) + { + client.Authenticate(Options.Account, Options.Password); + } + + return client; } - else + catch(Exception e) { - // fix issue #6 - client.Connect(Options.Server, Options.Port, SecureSocketOptions.Auto); + throw e; } - - // Note: since we don't have an OAuth2 token, disable - // the XOAUTH2 authentication mechanism. - client.AuthenticationMechanisms.Remove("XOAUTH2"); - - // user login smtp server (fix issue #9) - if (!string.IsNullOrEmpty(Options.Account) && !string.IsNullOrEmpty(Options.Password)) - { - client.Authenticate(Options.Account, Options.Password); - } - - return client; } #endregion From 93feef43ecde369d0f39930c63ce54c817f17b5a Mon Sep 17 00:00:00 2001 From: yangjian Date: Fri, 13 Jan 2023 14:23:09 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/NETCore.MailKit/NETCore.MailKit.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NETCore.MailKit/NETCore.MailKit.csproj b/src/NETCore.MailKit/NETCore.MailKit.csproj index 264ac45..ccc9715 100644 --- a/src/NETCore.MailKit/NETCore.MailKit.csproj +++ b/src/NETCore.MailKit/NETCore.MailKit.csproj @@ -10,7 +10,7 @@ netstandard2.1 True - 2.1.0 + 2.1.1 Lvcc MailKit extension for asp.net core. Easy send email in asp.net core project. From c1a4a5b89b27353e4773fecf75c773535d42c1d7 Mon Sep 17 00:00:00 2001 From: yangjian Date: Fri, 13 Jan 2023 14:35:16 +0800 Subject: [PATCH 3/5] update version --- src/NETCore.MailKit/NETCore.MailKit.csproj | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/NETCore.MailKit/NETCore.MailKit.csproj b/src/NETCore.MailKit/NETCore.MailKit.csproj index ccc9715..cb96a23 100644 --- a/src/NETCore.MailKit/NETCore.MailKit.csproj +++ b/src/NETCore.MailKit/NETCore.MailKit.csproj @@ -11,20 +11,21 @@ netstandard2.1 True 2.1.1 - Lvcc + jason MailKit extension for asp.net core. Easy send email in asp.net core project. - Copyright 2017 (c) Lvcc. All rights reserved - https://github.com/myloveCc/NETCore.MailKit - https://github.com/myloveCc/NETCore.MailKit + Copyright 2023 (c) Flame. All rights reserved + https://github.com/mswinner/NETCore.MailKit2 + https://github.com/mswinner/NETCore.MailKit2 MailKit ASP.NETCore git - 2.1.0 - 2.1.0 + 2.1.1 + 2.1.1 1: Update Mailkit to version 3.2.0. 2: Adds support for sending emails with attachments. #19 3: Update example sdk to .NET 6 + Flame.MailKit From 4fe46f692fbd4a69d76061b854b2e12b5f78b5ca Mon Sep 17 00:00:00 2001 From: yangjian Date: Mon, 16 Jan 2023 10:57:51 +0800 Subject: [PATCH 4/5] client.CheckCertificateRevocation = false; --- src/NETCore.MailKit/MailKitProvider.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/NETCore.MailKit/MailKitProvider.cs b/src/NETCore.MailKit/MailKitProvider.cs index af23899..0cbeec9 100644 --- a/src/NETCore.MailKit/MailKitProvider.cs +++ b/src/NETCore.MailKit/MailKitProvider.cs @@ -41,6 +41,7 @@ private SmtpClient InitSmtpClient() { var client = new SmtpClient(); + client.CheckCertificateRevocation = false; //设置timeout 避免长时间的等待 client.Timeout = 5000; client.ServerCertificateValidationCallback = (s, c, h, e) => true; From f193132ea1391430abc15f411c99fe599d30032e Mon Sep 17 00:00:00 2001 From: yangjian Date: Mon, 16 Jan 2023 10:59:39 +0800 Subject: [PATCH 5/5] update verison --- src/NETCore.MailKit/NETCore.MailKit.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NETCore.MailKit/NETCore.MailKit.csproj b/src/NETCore.MailKit/NETCore.MailKit.csproj index cb96a23..0e6b9a2 100644 --- a/src/NETCore.MailKit/NETCore.MailKit.csproj +++ b/src/NETCore.MailKit/NETCore.MailKit.csproj @@ -10,7 +10,7 @@ netstandard2.1 True - 2.1.1 + 2.1.2 jason MailKit extension for asp.net core. Easy send email in asp.net core project.