MailKit smtp.office365.com特殊字符编码问题

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

首先,我不知道我的问题是否源于对Mailkit的错误使用(顺便说一句,这是一款很棒的软件)或smtp.office365.com的错误配置。

MailKit的版本是:2.6.0

我尝试在主题和文本正文中使用此字符串Test d'ênvoïe d'èmail avec des àccénts发送消息。

[当我使用smtp.office365.com帐户发送电子邮件时,当我在Office 365框中收到电子邮件时,主题很好,但正文看起来像Test d'�nvo�e d'�mail avec des �cc�nts

我尝试使用另一家公司的另一个smtp.office365.com帐户,当我在Office 365邮箱中收到该帐户时,主题和正文都很好。

我尝试将具有第一个smtp帐户的相同电子邮件发送到GMAIL电子邮件框中。受试者和身体都很好。

所以我不知道第一个smtp帐户是否配置错误,或者Outlook(台式机和网络)是否有错误?

发送电子邮件的代码非常简单,没有花哨的地方。每天都会使用此代码从我们的软件发送电子邮件,这是我们第一次遇到smtp这类问题。让我感到困扰的是,这是一个办公室365 SMTP,就像我们每天使用的SMTP一样,没有任何麻烦。

-编辑根据@jstedfast的请求,此处是MimeKit / MailKit生成的原始MIME

From: [email protected]
Date: Tue, 26 May 2020 14:16:13 +0000
Subject: Test =?utf-8?b?ZCfDqm52b8OvZSBkJ8OobWFpbCBhdmVjIGRlcyDDoGNjw6ludHM=?=
Message-Id: <54G3D036QAU4.3G654QDV2MVS2@4b245b0f83f4>
To: [email protected]
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="=-xjuWE0kh6/lmMc7JIcMJ3g=="

--=-xjuWE0kh6/lmMc7JIcMJ3g==
Content-Type: text/plain; charset=utf-8

Test d'ênvoïe d'èmail avec des àccénts ça, ~ $ #{][*µµ$£= +
--=-xjuWE0kh6/lmMc7JIcMJ3g==
Content-Type: text/html; charset=utf-8
Content-Id: <RUL3D036QAU4.Y7K3UPECLV0Q3@4b245b0f83f4>

Test d'ênvoïe d'èmail avec des àccénts ça, ~ $ #{][*µµ$£= +
--=-xjuWE0kh6/lmMc7JIcMJ3g==--
c# email smtp office365 mailkit
1个回答
0
投票

[jdweng在他的评论中建议,这可能是接收Outlook客户端中的字体问题(换句话说,Outlook所使用的字体没有êïè的字形, àé)。

由于每个字符没有得到2个垃圾符号,如��(或À�),这表明MailKit使用的字符编码如iso-8859-1(或iso-8859-15?),并且接收Outlook客户端也使用单字节字符编码对其进行解码...否则MailKit使用UTF-8 接收Outlook客户端正确地将其识别为UTF-8(UTF-8使用2拉丁字母中每个重音字符的字节数),但由于字体问题而无法显示字形。

如果您未明确设置要在邮件正文中使用的MailKit的字符编码,则默认为UTF-8(这表示字体问题)。

这是您如何指定在MimeKit / MailKit中使用的字符编码的示例:

var body = new TextPart ("plain");
body.SetText ("Test d'ênvoïe d'èmail avec des àccénts", Encoding.GetEncoding ("iso-8859-1"));

因此,我想这就是我们如何创建消息(尤其是消息正文)的问题?

如果您可以共享MimeKit / MailKit生成的原始MIME,那将很有帮助。

为此,您可以使用MimeMessage.WriteTo(string fileName)方法,然后使用您喜欢的文本编辑器打开文件并复制并粘贴内容。

© www.soinside.com 2019 - 2024. All rights reserved.