使用Microsoft Graph发送邮件时发件人姓名特殊字符显示异常
使用Microsoft Graph发送邮件时,发件人显示名称里的"Bündchen"会被错误显示为"B?undchen",且我并未主动向Graph传递该名称。查看邮件头发现:
From: Max B?ndchen <(ommited)@hotmail.com>
但如果在邮件正文中加入带重音的字符,显示名称就能正常显示,此时邮件头包含正确的编码格式:
From: =?iso-8859-1?Q?Max_Bündchen?= <(ommited)@hotmail.com>
已尝试以下操作但问题未解决:
- 切换UTF-8和ISO-8859-1编码发送POST请求
- 修改账户配置文件中的名称
显式指定发件人显示名称
在Graph请求的message.from.emailAddress字段中主动设置name为"Max Bündchen",强制Graph对包含特殊字符的名称进行编码。示例请求体:{ "message": { "subject": "测试邮件", "body": { "contentType": "Text", "content": "测试内容" }, "from": { "emailAddress": { "name": "Max Bündchen", "address": "(ommited)@hotmail.com" } }, "toRecipients": [ { "emailAddress": { "address": "recipient@example.com" } } ] } }显式设置后,Graph会自动处理特殊字符的编码,避免默认逻辑下的编码缺失。
强制请求使用UTF-8编码
在POST请求头中添加Content-Type: application/json; charset=utf-8,确保整个请求体以UTF-8格式传递,覆盖可能存在的默认编码设置偏差。升级Graph API版本
确认使用的是Microsoft Graph v1.0或beta通道的最新版本,旧版本可能存在特殊字符编码的触发逻辑bug,新版本大概率已修复此类问题。排除客户端解码问题
可在Outlook网页版、桌面版等不同客户端查看邮件,确认是否为特定客户端的解码异常。但根据测试结果,问题核心在于Graph是否触发显示名称的编码,客户端问题概率较低。
内容的提问来源于stack exchange,提问作者Max Bündchen

