logic added
This commit is contained in:
@@ -39,6 +39,34 @@ namespace Massmailer.Shared.Logic
|
||||
return message;
|
||||
}
|
||||
|
||||
public async Task SendMailsAsync(MassmailerProject project)
|
||||
{
|
||||
try
|
||||
{
|
||||
await this.smtpClient.ConnectAsync(this.smtpSettings.Server, this.smtpSettings.Port, this.smtpSettings.UseSsl);
|
||||
await this.smtpClient.AuthenticateAsync(this.smtpSettings.Username, this.smtpSettings.Password);
|
||||
|
||||
foreach (var recipient in project.Recipients)
|
||||
{
|
||||
await this.CheckForWaitTime();
|
||||
|
||||
var message = this.CreateMessage(recipient.Address, project.Subject, project.Body);
|
||||
await this.smtpClient.SendAsync(message);
|
||||
|
||||
this.lastMailSent = DateTime.Now;
|
||||
recipient.IsSent = true;
|
||||
recipient.SentDate = this.lastMailSent;
|
||||
this.hub.Publish<MailSentEvent>(new MailSentEvent(message.To[0].ToString(), this.lastMailSent));
|
||||
}
|
||||
|
||||
await this.smtpClient.DisconnectAsync(true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new InvalidOperationException("Something went wrong while sending many mails", ex);
|
||||
}
|
||||
}
|
||||
|
||||
public List<MimeMessage> CreateMessages(List<string> recipients, string subject, string body)
|
||||
{
|
||||
var result = new List<MimeMessage>();
|
||||
|
||||
28
Massmailer.Shared/Logic/MassmailerProjectLogic.cs
Normal file
28
Massmailer.Shared/Logic/MassmailerProjectLogic.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using Massmailer.Shared.Model;
|
||||
using Newtonsoft.Json;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Massmailer.Shared.Logic
|
||||
{
|
||||
public static class MassmailerProjectLogic
|
||||
{
|
||||
public async static void Save(MassmailerProject project, string filePath)
|
||||
{
|
||||
var json = JsonConvert.SerializeObject(project);
|
||||
await File.WriteAllTextAsync(filePath, json);
|
||||
}
|
||||
|
||||
public async static Task<MassmailerProject> Load(string filePath)
|
||||
{
|
||||
var project = new MassmailerProject();
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
var json = await File.ReadAllTextAsync(filePath);
|
||||
project = JsonConvert.DeserializeObject<MassmailerProject>(json);
|
||||
}
|
||||
|
||||
return project;
|
||||
}
|
||||
}
|
||||
}
|
||||
28
Massmailer.Shared/Logic/SmtpSettingsLogic.cs
Normal file
28
Massmailer.Shared/Logic/SmtpSettingsLogic.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using Massmailer.Shared.Model;
|
||||
using Newtonsoft.Json;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Massmailer.Shared.Logic
|
||||
{
|
||||
public static class SmtpSettingsLogic
|
||||
{
|
||||
public async static void Save(SmtpSettings project, string filePath)
|
||||
{
|
||||
var json = JsonConvert.SerializeObject(project);
|
||||
await File.WriteAllTextAsync(filePath, json);
|
||||
}
|
||||
|
||||
public async static Task<SmtpSettings> Load(string filePath)
|
||||
{
|
||||
var project = new SmtpSettings();
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
var json = await File.ReadAllTextAsync(filePath);
|
||||
project = JsonConvert.DeserializeObject<SmtpSettings>(json);
|
||||
}
|
||||
|
||||
return project;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MailKit" Version="2.10.1" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
|
||||
<PackageReference Include="PubSub" Version="4.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Massmailer.Shared.Model
|
||||
{
|
||||
public class MassmailProject
|
||||
{
|
||||
public List<MassmailRecipient> Recipient { get; set; }
|
||||
|
||||
public string Subject { get; set; }
|
||||
|
||||
public string Body { get; set; }
|
||||
}
|
||||
}
|
||||
18
Massmailer.Shared/Model/MassmailerProject.cs
Normal file
18
Massmailer.Shared/Model/MassmailerProject.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Massmailer.Shared.Model
|
||||
{
|
||||
public class MassmailerProject
|
||||
{
|
||||
public MassmailerProject()
|
||||
{
|
||||
this.Recipients = new List<MassmailerRecipient>();
|
||||
}
|
||||
|
||||
public List<MassmailerRecipient> Recipients { get; set; }
|
||||
|
||||
public string Subject { get; set; }
|
||||
|
||||
public string Body { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
namespace Massmailer.Shared.Model
|
||||
{
|
||||
public class MassmailRecipient
|
||||
public class MassmailerRecipient
|
||||
{
|
||||
public string Recipient { get; set; }
|
||||
public string Address { get; set; }
|
||||
|
||||
public bool IsSent { get; set; }
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Massmailer.Shared.Model
|
||||
namespace Massmailer.Shared.Model
|
||||
{
|
||||
public class SmtpSettings
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user