You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Provider A发往MS365的邮件无收件人邮箱地址问题求助

问题描述

我从Provider A托管的邮箱#1向MS365托管的邮箱#2发送邮件(通过Outlook手动新建发送,无代码介入),邮箱#2能正常接收,但邮件仅显示收件人名称,无To邮箱地址,CC和BCC字段也为空。

已完成的排查操作

  • 在MS Outlook客户端查看:仅显示「To: 名称」,无邮箱地址且无法查看详情;
  • 查看原始邮件(属性、完整MIME消息及头信息):To头仅显示名称,收件人邮箱及域名未出现在任何头信息或正文中;
  • 通过MS Graph API获取邮件:MailAddress对象仅包含名称,无邮箱地址。

Graph API相关代码片段

获取邮件的代码:

using Microsoft.Graph.Models;
...
Microsoft.Graph.GraphServiceClient _Client = ...
...
List<Message> fetched = (await _Client.Users[_Username].MailFolders["Inbox"].Messages
.GetAsync((requestConfiguration) =>
{
    requestConfiguration.QueryParameters.Select = ["*"]; // 显式查询以获取尽可能多的字段
})
)?.Value ?? [];

遍历收件人获取地址的常规代码:

foreach (var message in fetched)
    foreach (var recipient in (message?.ToRecipients ?? []))
    {
        var toAddress = recipient?.EmailAddress?.Address;
        Console.WriteLine($"Look: {toAddress}");
    }

当前场景中toAddress为null。

注:该问题仅在Provider A的邮箱发送邮件时出现,其他提供商发送的邮件无此问题,正在测试是否Provider A所有邮件均存在该问题。

待解决问题

  1. 如何查看并提取收件人邮箱地址?应从何处查找?
  2. 该问题产生的原因是什么?是发送方还是接收方导致?

回答

问题1:提取收件人邮箱地址的可行方法

  1. 查看MS365邮件跟踪日志:登录Exchange Admin Center,进入「邮件流」→「邮件跟踪」,通过发件人、收件人、时间范围定位目标邮件,这里会记录邮件投递时的真实收件人邮箱地址,不受邮件头显示限制;
  2. 使用Exchange Online PowerShell查询:执行Get-MessageTrace命令获取邮件的完整跟踪数据,直接提取收件人地址:
    Get-MessageTrace -SenderAddress "邮箱#1完整地址" -RecipientAddress "邮箱#2完整地址" -StartDate (Get-Date).AddDays(-1)
    
  3. 联系Provider A获取发送日志:请求Provider A提供该邮件的原始SMTP发送数据,确认邮件发送时的收件人字段是否包含邮箱地址。

问题2:问题原因分析

大概率是发送方(Provider A)的邮件服务器配置异常:

  • 符合SMTP标准的邮件,To头应包含「名称 <邮箱地址>」格式,至少需包含邮箱地址字段;
  • Provider A的邮件服务器在构建邮件时,仅写入了收件人名称,未添加对应的邮箱地址信息;
  • MS365能完成投递是因为SMTP传输层已传递收件人地址,但邮件头缺失该信息,导致Outlook客户端和Graph API无法解析出地址;
  • 其他提供商无此问题,进一步验证问题出在Provider A的发送环节,而非MS365的接收或解析逻辑。

内容的提问来源于stack exchange,提问作者pcbulldozer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:57:14