发送网格api以不同的编码发送附件

问题描述 投票:0回答:4

我遇到一个问题,我们使用 ASP.NET 框架和 SendGrid api/sdk 向用户发送电子邮件。我们的附件名称采用西班牙语字符,如下所示,但收到邮件时,它在 Outlook 中的编码不同。在 Gmail 中,西班牙语字符显示正确,但此问题与 Outlook 相关。

我尝试了不同的方法,例如标准化字符串和转换为 Base64,但这种方法不起作用。它仅发生在电子邮件附件中,但不会发生在电子邮件正文中。我了解到 SendGrid 默认将 Ascii 编码转换为 UTF-8 编码。请参考下面的代码。

enter image description here

enter image description here

这个问题在outlook中比较普遍,有人可以分享解决方案吗?

enter image description here

asp.net encoding outlook sendgrid
4个回答
0
投票

看起来您正在使用 UTF32 对文件名进行编码并将其发送到 SendGrid。我建议你尝试UTF8。


0
投票

我目前在 SendGrid 上也遇到同样的问题,并找到了解决方案。

如果添加:

<!-- ™ --> 

在您的字符集声明之后,这将强制 html 正文为 utf-8,您可以添加任何非 ASCII 字符,并且您的文件名将正确显示。

我已在下面的示例中附加了您的字符和其他非 ASCII 字符。

包含非 ASCII 字符的文件名


0
投票

对我有用

var fileName = HttpUtility.HtmlEncode(file.FileName);
msg.AddAttachment(fileName, base64Data);

0
投票

你可以尝试一下。

def encode_filename(filename:str) -> str:
    encoded_filename = base64.b64encode(filename.encode('utf-8')).decode('utf-8')
    return f'=?utf-8?B?{encoded_filename}?='
file_name = "Calendrier de l'Avent à lire et à écouter.pdf"
print(encode_filename(file_name))
# =?utf-8?B?Q2FsZW5kcmllciBkZSBsJ0F2ZW50IMOgIGxpcmUgZXQgw6Agw6ljb3V0ZXIucGRm?=
© www.soinside.com 2019 - 2024. All rights reserved.