使用 ExchangeServices.SendEmail 时正文中的字符无效

Invalid Char in body when using ExchangeServices.SendEmail

提问人:dblwizard 提问时间:6/23/2023 最后编辑:Eugene Astafievdblwizard 更新时间:6/26/2023 访问量:41

问:

我有一些代码可以在出现错误时发送电子邮件。它包含的一件事是“堆栈跟踪”。有时,Stack Trace 最终会有一些“特殊字符”或转义序列,这些字符会转换为特殊字符,它看起来像这样:

at CrystalDecisions.CrystalReports.Engine.FormatEngine.W(Stream q, String r)

您可以在末尾看到特殊字符“(Stream q, String r)”。在这个例子中,它实际上是一个0x08。我还有另一个例子,它的0x03和0x1a。这会导致“无效字符”异常。我想知道是否有办法在发送消息之前扫描/替换任何/所有“无效字符”?我不想“知道”所有可能的无效字符。 正在拨打的电话是:

ExchangeServices.SendEmail(creds, fromEmailAddr, toEmailAddr, subject, body)

我已经验证了它在 Visual Studio 的 StackTrace 输出中。它不是由转换我的代码中的字符串引起的。

双人房 (DBL)

vb.net crystal-reports exchange-server exchangewebservices 无效字符

评论

1赞 Etienne de Martel 6/23/2023
该字符串中的“特殊字符”是什么?它们都是可打印的。
0赞 Panagiotis Kanavos 6/23/2023
这些框既不是特殊字符,也不是转义序列。它们是尝试使用错误的代码页发送/转换带有非 US-ASCII 字符的文本的结果。要么在消息中使用了错误的编码(例如 ASCII 而不是 UTF8),要么此处未发布的某些代码试图“修复”代码页并破坏了文本
0赞 Panagiotis Kanavos 6/23/2023
你用什么来发送消息?默认情况下,SmtpClient.SendMail 使用 US-ASCII。您需要使用将 UTF8 指定为正文编码的重载
0赞 dblwizard 6/23/2023
对不起,当我预览消息时显示字符,但现在不显示。使用 UxD 编辑器时,q 和 r 前面的字符串中有一个0x08字符。我将在错误处理程序之前查看代码,但事情只是作为 String 传递。
0赞 Etienne de Martel 6/24/2023
0x08?这是一个退格键。堆栈跟踪从何而来?

答: 暂无答案