Moving files using MailKit nuget package (Smtp successor) as SmtpClient has been marked as obsolete by Microsoft
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
using System;
|
||||
using System.Net.Mail;
|
||||
using System.Threading.Tasks;
|
||||
using Umbraco.Core.Composing;
|
||||
using MailKit.Security;
|
||||
using MimeKit;
|
||||
using MimeKit.Text;
|
||||
using Umbraco.Core.Configuration;
|
||||
using Umbraco.Core.Events;
|
||||
using SmtpClient = MailKit.Net.Smtp.SmtpClient;
|
||||
|
||||
namespace Umbraco.Core
|
||||
{
|
||||
@@ -21,7 +24,7 @@ namespace Umbraco.Core
|
||||
{
|
||||
}
|
||||
|
||||
internal EmailSender(IGlobalSettings globalSettings, bool enableEvents)
|
||||
public EmailSender(IGlobalSettings globalSettings, bool enableEvents)
|
||||
{
|
||||
_globalSettings = globalSettings;
|
||||
_enableEvents = enableEvents;
|
||||
@@ -45,7 +48,9 @@ namespace Umbraco.Core
|
||||
{
|
||||
using (var client = new SmtpClient())
|
||||
{
|
||||
client.Send(message);
|
||||
client.Connect(_globalSettings.SmtpSettings.Host, _globalSettings.SmtpSettings.Port);
|
||||
client.Send(ConstructEmailMessage(message));
|
||||
client.Disconnect(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -65,14 +70,21 @@ namespace Umbraco.Core
|
||||
{
|
||||
using (var client = new SmtpClient())
|
||||
{
|
||||
if (client.DeliveryMethod == SmtpDeliveryMethod.Network)
|
||||
var appSettingsDeliveryMethod = _globalSettings.SmtpSettings.DeliveryMethod;
|
||||
var deliveryMethod = (SmtpDeliveryMethod)Enum.Parse(typeof(SmtpDeliveryMethod), appSettingsDeliveryMethod, true);
|
||||
|
||||
await client.ConnectAsync(_globalSettings.SmtpSettings.Host, _globalSettings.SmtpSettings.Port);
|
||||
|
||||
if (deliveryMethod == SmtpDeliveryMethod.Network)
|
||||
{
|
||||
await client.SendMailAsync(message);
|
||||
await client.SendAsync(ConstructEmailMessage(message));
|
||||
}
|
||||
else
|
||||
{
|
||||
client.Send(message);
|
||||
client.Send(ConstructEmailMessage(message));
|
||||
}
|
||||
|
||||
await client.DisconnectAsync(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -83,7 +95,7 @@ namespace Umbraco.Core
|
||||
/// <remarks>
|
||||
/// We assume this is possible if either an event handler is registered or an smtp server is configured
|
||||
/// </remarks>
|
||||
internal static bool CanSendRequiredEmail(IGlobalSettings globalSettings) => EventHandlerRegistered || globalSettings.IsSmtpServerConfigured;
|
||||
public static bool CanSendRequiredEmail(IGlobalSettings globalSettings) => EventHandlerRegistered || globalSettings.IsSmtpServerConfigured;
|
||||
|
||||
/// <summary>
|
||||
/// returns true if an event handler has been registered
|
||||
@@ -103,5 +115,29 @@ namespace Umbraco.Core
|
||||
var handler = SendEmail;
|
||||
if (handler != null) handler(null, e);
|
||||
}
|
||||
|
||||
private MimeMessage ConstructEmailMessage(MailMessage mailMessage)
|
||||
{
|
||||
var messageToSend = new MimeMessage
|
||||
{
|
||||
Subject = mailMessage.Subject
|
||||
};
|
||||
|
||||
var fromEmail = mailMessage.From?.Address;
|
||||
if(string.IsNullOrEmpty(fromEmail))
|
||||
fromEmail = _globalSettings.SmtpSettings.From;
|
||||
|
||||
messageToSend.From.Add(new MailboxAddress(fromEmail));
|
||||
|
||||
foreach (var mailAddress in mailMessage.To)
|
||||
messageToSend.To.Add(new MailboxAddress(mailAddress.Address));
|
||||
|
||||
if (mailMessage.IsBodyHtml)
|
||||
messageToSend.Body = new TextPart(TextFormat.Html) { Text = mailMessage.Body };
|
||||
else
|
||||
messageToSend.Body = new TextPart(TextFormat.Plain) { Text = mailMessage.Body };
|
||||
|
||||
return messageToSend;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user