diff --git a/src/Ghosts.Client/Ghosts.Client.csproj b/src/Ghosts.Client/Ghosts.Client.csproj
index 49ceb939..5ebb3710 100755
--- a/src/Ghosts.Client/Ghosts.Client.csproj
+++ b/src/Ghosts.Client/Ghosts.Client.csproj
@@ -439,13 +439,22 @@
4.3.0
-
+
1.7.4.11
-
+
1.7.4.11
-
+
+ 1.7.4.11
+
+
+ 1.7.4.11
+
+
+ 1.7.4.11
+
+
1.7.4.11
diff --git a/src/Ghosts.Client/Handlers/Outlook.cs b/src/Ghosts.Client/Handlers/Outlook.cs
index b4b645f7..f3b2de80 100755
--- a/src/Ghosts.Client/Handlers/Outlook.cs
+++ b/src/Ghosts.Client/Handlers/Outlook.cs
@@ -15,6 +15,7 @@
using Exception = System.Exception;
using MAPIFolder = Microsoft.Office.Interop.Outlook.MAPIFolder;
using ReportItem = Ghosts.Domain.Code.ReportItem;
+using Newtonsoft.Json;
namespace Ghosts.Client.Handlers;
@@ -38,8 +39,12 @@ public Outlook(TimelineHandler handler)
var currentDir = new FileInfo(GetType().Assembly.Location).Directory;
RedemptionLoader.DllLocation64Bit = Path.GetFullPath(currentDir + @"\lib\redemption64.dll");
RedemptionLoader.DllLocation32Bit = Path.GetFullPath(currentDir + @"\lib\redemption.dll");
+
+ Log.Trace("Redemption64 loaded from " + Path.GetFullPath(currentDir + @"\lib\redemption64.dll"));
+ Log.Trace("Redemption loaded from " + Path.GetFullPath(currentDir + @"\lib\redemption.dll"));
+
//Create a Redemption object and use it
- Log.Trace("Creating new RDO session");
+ Log.Trace("Creating new RDO session...");
var session = RedemptionLoader.new_RDOSession();
Log.Trace("Attempting RDO session logon...");
session.Logon(Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
@@ -55,7 +60,7 @@ public Outlook(TimelineHandler handler)
_oMapiNamespace = _app.GetNamespace("MAPI");
_folderInbox = _oMapiNamespace.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
_folderOutbox = _oMapiNamespace.GetDefaultFolder(OlDefaultFolders.olFolderOutbox);
- Log.Trace("Launching Outlook");
+ Log.Trace("Launching Outlook...");
_folderInbox.Display();
if (handler.Loop)
@@ -354,8 +359,8 @@ private bool ReplyViaOutlook(EmailConfiguration emailConfig)
private bool SendEmailViaOutlook(EmailConfiguration emailConfig)
{
- ClientConfiguration.EmailSettings config = Program.Configuration.Email;
- bool wasSuccessful = false;
+ var config = Program.Configuration.Email;
+ var wasSuccessful = false;
try
{
@@ -394,7 +399,7 @@ private bool SendEmailViaOutlook(EmailConfiguration emailConfig)
if (emailConfig.Attachments.Count > 0)
{
//Add attachments
- foreach (string path in emailConfig.Attachments)
+ foreach (var path in emailConfig.Attachments)
{
mailItem.Attachments.Add(path);
Log.Trace($"Adding attachment from: {path}");
@@ -437,25 +442,25 @@ private bool SendEmailViaOutlook(EmailConfiguration emailConfig)
mailItem.SendUsingAccount = acc;
}
}
-
+
if (config.SaveToOutbox)
{
Log.Trace("Saving mailItem to outbox...");
mailItem.Move(_folderOutbox);
mailItem.Save();
}
-
+
Log.Trace("Attempting new Redemtion SafeMailItem...");
var rdoMail = new SafeMailItem
{
Item = mailItem
};
- //Parse To
- if (emailConfig.To.Count > 0)
+ Log.Trace($"Email configuration from timeline is currently: {JsonConvert.SerializeObject(emailConfig)}...");
+ Log.Trace($"Attempting add of To addresses...");
+ if (emailConfig.To.Any())
{
- var list = emailConfig.To.Distinct();
- foreach (var a in list)
+ foreach (var a in emailConfig.To)
{
var r = rdoMail.Recipients.AddEx(a.Trim());
r.Resolve();
@@ -467,41 +472,33 @@ private bool SendEmailViaOutlook(EmailConfiguration emailConfig)
throw new Exception("Must specify to-address");
}
- //Parse Cc
- if (emailConfig.Cc.Count > 0)
+ foreach (var a in emailConfig.Cc)
{
- var list = emailConfig.Cc.Distinct();
- foreach (var a in list)
+ var r = rdoMail.Recipients.AddEx(a.Trim());
+ r.Resolve();
+ if (r.Resolved)
{
- var r = rdoMail.Recipients.AddEx(a.Trim());
- r.Resolve();
- if (r.Resolved)
- {
- r.Type = 2; //CC
- }
-
- Log.Trace($"RdoMail CC {a.Trim()}");
+ r.Type = 2; //CC
}
- }
- if (emailConfig.Bcc.Count > 0)
+ Log.Trace($"RdoMail CC {a.Trim()}");
+ }
+
+ foreach (var a in emailConfig.Bcc)
{
- var list = emailConfig.Bcc.Distinct();
- foreach (var a in list)
+ var r = rdoMail.Recipients.AddEx(a.Trim());
+ r.Resolve();
+ if (r.Resolved)
{
- var r = rdoMail.Recipients.AddEx(a.Trim());
- r.Resolve();
- if (r.Resolved)
- {
- r.Type = 3; //BCC
- }
-
- Log.Trace($"RdoMail BCC {a.Trim()}");
+ r.Type = 3; //BCC
}
+
+ Log.Trace($"RdoMail BCC {a.Trim()}");
}
+
rdoMail.Recipients.ResolveAll();
-
+
Log.Trace("Attempting to send Redemtion SafeMailItem...");
rdoMail.Send();
diff --git a/src/Ghosts.Client/Infrastructure/Email/EmailConfiguration.cs b/src/Ghosts.Client/Infrastructure/Email/EmailConfiguration.cs
index 92d0d1d4..80ee139e 100755
--- a/src/Ghosts.Client/Infrastructure/Email/EmailConfiguration.cs
+++ b/src/Ghosts.Client/Infrastructure/Email/EmailConfiguration.cs
@@ -5,12 +5,10 @@
using System.DirectoryServices.AccountManagement;
using System.IO;
using System.Linq;
-using System.Security.Principal;
-using System.Threading;
using Ghosts.Domain.Code;
using Ghosts.Domain.Code.Helpers;
+using Newtonsoft.Json;
using NLog;
-// ReSharper disable InconsistentNaming
namespace Ghosts.Client.Infrastructure.Email;
@@ -56,6 +54,8 @@ public enum EmailBodyType
public EmailConfiguration(IList