Files
Massmailer/Massmailer.UI/Views/MainView.xaml.cs
2021-02-04 22:45:41 +01:00

101 lines
3.6 KiB
C#

using Massmailer.Shared.Events;
using Massmailer.Shared.Logic;
using Massmailer.Shared.Model;
using PubSub;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
namespace Massmailer.UI
{
public partial class MainView : Window
{
private readonly Hub hub = new Hub();
private SmtpSettings smtpSettings;
private MassmailerProject project;
private string selectedFilePath = string.Empty;
public MainView()
{
this.InitializeComponent();
this.hub.Subscribe<MailSentEvent>(this.MailSentEventHandler);
}
private async void Button_Click(object sender, RoutedEventArgs e)
{
var smtpSettings = new SmtpSettings
{
Server = "localhost",
Port = 25,
Username = "test@test.local",
Password = "asdf33asdf",
UseSsl = false,
SenderEmail = "test@test.local",
SenderName = "Massmailer Test",
MaxSendRate = 60
};
var mailer = new Mailer(smtpSettings, this.hub);
var recipients = new List<string>
{
"1@test.local",
"2@test.local",
"3@test.local",
"4@test.local",
"5@test.local",
"6@test.local",
"7@test.local",
"8@test.local",
"9@test.local",
"10@test.local"
};
var project = new MassmailerProject();
project.Recipients.Add(new MassmailerRecipient { Address = "1@test.local" });
project.Recipients.Add(new MassmailerRecipient { Address = "2@test.local" });
project.Recipients.Add(new MassmailerRecipient { Address = "3@test.local" });
project.Recipients.Add(new MassmailerRecipient { Address = "4@test.local" });
project.Recipients.Add(new MassmailerRecipient { Address = "5@test.local" });
project.Recipients.Add(new MassmailerRecipient { Address = "6@test.local" });
project.Recipients.Add(new MassmailerRecipient { Address = "7@test.local" });
project.Recipients.Add(new MassmailerRecipient { Address = "8@test.local" });
project.Recipients.Add(new MassmailerRecipient { Address = "9@test.local" });
project.Recipients.Add(new MassmailerRecipient { Address = "10@test.local" });
project.Subject = "Hello World Subject";
project.Body = "Hello World Body";
await mailer.SendMailsAsync(project);
var result = "";
foreach (var recipient in project.Recipients)
{
result += $"{recipient.Address} - {recipient.IsSent} - {recipient.SentDate}\r\n";
}
MassmailerProjectLogic.Save(project, "project.json");
MessageBox.Show(result);
}
private void MailSentEventHandler(MailSentEvent mailSentEvent)
{
this.BtnSend.Content = $"mail sent: {mailSentEvent.Recipient} at {mailSentEvent.Timestamp}";
}
private async void Window_Loaded(object sender, RoutedEventArgs e)
{
this.smtpSettings = await SmtpSettingsLogic.Load(Path.Combine(Environment.CurrentDirectory, Constants.SmtpSettingsFileName));
}
}
}