1

所以我对这个话题进行了很多研究。有一个COM方法,我花了很多时间来实现它,它涉及到IMessage,IConverterSession,一些反射,诸如此类。我发现的大多数答案都表明这不能在 C# 中使用,但对我来说似乎有办法。无论如何,我得到的关闭是接收一个空的 IStream 对象(长度 = 0)。让我真正决定完全放弃这种方法的另一件事是一些报告它可能无法在 64 位版本的 Outlook 2010 下工作。

更明显的方法是从 Outlook 中简单地获取 MailItem 并开始从中构建 MIME 消息。这似乎非常乏味且容易出错 + 它还会通过解析/构建 MIME 功能使我的代码膨胀。

我在想是否有另一种方法,即某种方法可以保留现有的 .NET 类,以便轻松地将我的 Outlook 邮件项转换为 MIME 邮件。我认为 MailMessage / SmtpClient 类可以解决问题。所以我这样做了:

        SmtpClient client = new SmtpClient();
        client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;

从那时起,我可以收到消息(我为每条消息指定一个新的投递目录,因为我不能知道它们的名字)。

因此,在深入反思以查看是否可以在不实际保存文件的情况下获取内容之前,.Net 中是否有任何其他内置方式可以从单独的字段(来自、到、主题、正文、附件)构造 MIME 消息,我不坚持立即将 MailItem 转换为 MIME 消息的方法(尽管如果有的话会很好),但至少能够在某个对象上设置属性并从中获取构造的消息之后?

非常感谢!

4

1 回答 1

0

好的,这就是我解决它的方法:首先,我使用 MailMessage 类,用邮件项中的数据填充它,如下所示:

MailMessage msgMIME = new MailMessage();
msgMIME.Subject = mailItem.Subject; // mailItem is the Outlook Message.
// The rest of the logic here, setting from, to, bcc, cc, importance, body.

然后我在代码项目中使用本文中的一些代码: 将 Save() 功能添加到 Microsoft.Net.Mail.MailMessage

除了我用 MemoryStream 替换了那里的 FileStream。似乎工作得很好。

于 2011-11-18T20:24:28.103 回答