MailKit(C#)中特定格式发件人地址导致From地址为空
MailKit获取特定格式发件人地址为空的解决方法
当发件人地址格式为MyExampledomain:DummyPerson <DummyPerson@mail.MyExampledomain.com>时,直接调用item.From.ToString()会返回空值,问题出在From是AddressList类型,直接调用其ToString()方法无法正确解析这种带自定义显示名称的地址格式。
解决思路是遍历AddressList中的地址项,强转为MailboxAddress后提取具体信息:
foreach (var item in Folder) { // 处理From地址 if (item.From != null && item.From.Count > 0) { foreach (var address in item.From) { if (address is MailboxAddress mailboxAddr) { // 提取显示名称和邮箱地址 var displayName = mailboxAddr.Name; // 结果:MyExampledomain:DummyPerson var email = mailboxAddr.Address; // 结果:DummyPerson@mail.MyExampledomain.com // 拼接成完整地址字符串 var fullFromAddress = $"{displayName} <{email}>"; // 后续使用fullFromAddress即可 } } } }
原因说明:AddressList的ToString()方法在处理带特殊字符显示名称的地址时可能返回空,而MailboxAddress会正确解析显示名称和邮箱部分,即使显示名称包含冒号这类字符也不受影响。
内容的提问来源于stack exchange,提问作者Sukhbir Kalsi
相关产品推荐
相关产品推荐

