Generalized sender-from name for IMAP synchronizer.

This commit is contained in:
Burak Kaan Köse
2024-08-24 17:35:46 +02:00
parent d30c15464b
commit 3f7e7a1474

View File

@@ -136,6 +136,8 @@ namespace Wino.Core.Extensions
if (message == null) if (message == null)
return string.Empty; return string.Empty;
return message.From.Mailboxes.FirstOrDefault()?.Name ?? message.Sender?.Name ?? Translator.UnknownSender;
// From MimeKit // From MimeKit
// The "From" header specifies the author(s) of the message. // The "From" header specifies the author(s) of the message.
@@ -145,43 +147,44 @@ namespace Wino.Core.Extensions
// Also handle: https://stackoverflow.com/questions/46474030/mailkit-from-address // Also handle: https://stackoverflow.com/questions/46474030/mailkit-from-address
if (message.Sender != null) //if (message.Sender != null)
return string.IsNullOrEmpty(message.Sender.Name) ? message.Sender.Address : message.Sender.Name; // return string.IsNullOrEmpty(message.Sender.Name) ? message.Sender.Address : message.Sender.Name;
else if (message.From?.Mailboxes != null) //else if (message.From?.Mailboxes != null)
{ //{
var firstAvailableName = message.From.Mailboxes.FirstOrDefault(a => !string.IsNullOrEmpty(a.Name))?.Name; // var firstAvailableName = message.From.Mailboxes.FirstOrDefault(a => !string.IsNullOrEmpty(a.Name))?.Name;
if (string.IsNullOrEmpty(firstAvailableName)) // if (string.IsNullOrEmpty(firstAvailableName))
{ // {
var firstAvailableAddress = message.From.Mailboxes.FirstOrDefault(a => !string.IsNullOrEmpty(a.Address))?.Address; // var firstAvailableAddress = message.From.Mailboxes.FirstOrDefault(a => !string.IsNullOrEmpty(a.Address))?.Address;
if (!string.IsNullOrEmpty(firstAvailableAddress)) // if (!string.IsNullOrEmpty(firstAvailableAddress))
{ // {
return firstAvailableAddress; // return firstAvailableAddress;
} // }
} // }
return firstAvailableName; // return firstAvailableName;
} //}
// No sender, no from, I don't know what to do. //// No sender, no from, I don't know what to do.
return Translator.UnknownSender; //return Translator.UnknownSender;
} }
// TODO: This is wrong. // TODO: This is wrong.
public static string GetActualSenderAddress(MimeMessage mime) public static string GetActualSenderAddress(MimeMessage message)
{ {
if (mime == null) return message.From.Mailboxes.FirstOrDefault()?.Address ?? message.Sender?.Address ?? Translator.UnknownSender;
return string.Empty; //if (mime == null)
// return string.Empty;
bool hasSingleFromMailbox = mime.From.Mailboxes.Count() == 1; //bool hasSingleFromMailbox = mime.From.Mailboxes.Count() == 1;
if (hasSingleFromMailbox) //if (hasSingleFromMailbox)
return mime.From.Mailboxes.First().GetAddress(idnEncode: true); // return mime.From.Mailboxes.First().GetAddress(idnEncode: true);
else if (mime.Sender != null) //else if (mime.Sender != null)
return mime.Sender.GetAddress(idnEncode: true); // return mime.Sender.GetAddress(idnEncode: true);
else //else
return Translator.UnknownSender; // return Translator.UnknownSender;
} }
} }
} }