这个..不错.. Exchange 服务器将我的文本/纯文本消息从文本转换为 html 并将它们弄乱,只是因为它在正文的某处检测到了 html。
我怎样才能阻止他这样做?
编辑:我正在寻找服务器端修复 - 这会影响从应用程序服务器自动生成的电子邮件。这些消息是在 java 中显式生成的,
message.setContent("This is a <span>Test</span>", "text/plain");
正如 mundeep 指出的那样。
我认为这并不重要,但消息是直接通过 Outlook 或通过 Exchange Web Access 检索的。(没有 pop/imap)
答案1
您没有提到如何检索消息,但我之前在 Exchange 2007 和 IMAP 检索中看到过这种情况(尽管我相信它也会影响 POP3)。
看一下此 Technet 文档,特别是ImapMessagesRetrievalMimeFormat
开关。文档非常模糊,但 Exchange 可以强制从服务器检索消息的格式,无论是由用户(如链接所示)还是在服务本身上检索;在这种情况下,您可以使用Set-ImapSettings
command, and change the
MessageRetrievalMimeFormat
option.
The current setting for the service on your host can either be seen using PowerShell using the following and looking for 'MessageRetrievalMimeFormat
':
Get-ImapSettings | fl
或者你也可以使用 GUI:
- 展开‘服务器配置’
- 展开“客户端访问”
- 选择您要管理的服务器,然后选择“POP3 和 IMAP”选项卡
- 获取相应连接器的属性并检查“检索设置”选项卡。相关连接器的 MIME 格式可在此框顶部的“消息 MIME 格式”下拉框中查看/更改。
通过获取邮箱的属性并查看“邮箱功能”选项卡,可以对单个邮箱执行类似操作。
我无法告诉您哪种设置适合您的情况(因为文档非常模糊),但我的 Exchange 2007 安装将设置保留在“最佳正文格式”上。
答案2
您是否确定在发送消息时 MIME 类型明确设置为“text/plain”?
例如在.NET中你可以明确地将消息格式设置为纯文本或html例如:
msgMail.BodyFormat = MailFormat.Text;
在 Java 中你应该能够明确地发送纯文本消息通过将 MIME 类型设置为“text/plain”例如:
MimeMessage message = new MimeMessage(mailSession);
message.setSubject("Testing javamail plain");
message.setContent("This is a test", "text/plain");
答案3
我在 2007 年 8 月 10 日的新闻组 microsoft.public.exchange.applications 主题中找到了不可靠的解决方法,但尚未测试。Mikhail Teterin 发现,可以将邮件分为两部分(纯文本和 HTML 部分)作为“multipart/mixed”而不是“multipart/alternative”发送。Exchange 服务器仍会将纯文本部分转换为 HTML,但由于聚合邮件的类型为“multipart/mixed”,因此它将保留 HTML 部分。
我看到了另一条建议“强制 Exchange 将消息保留为收到的 7 位 MIME 类型”以及 Oliver Moazzezi 在同一个主题中对 Microsoft 文章的引用,但我找不到他的建议的具体实施。
答案4
找到答案了吗?我遇到了类似的问题,并找到了以下信息:http://support.microsoft.com/kb/946641
显然,在 Exchange Server 2007 Service Pack 1 发布时,默认行为发生了变化。我还没有机会测试它,但希望它能解决您的问题。