所以我对这个话题进行了很多研究。 有一个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;
从那时起,我可以收到消息(我为每条消息指定一个新的Drop目录,因为我没有他们的名字)。
因此,在深入研究反射之前,看看我是否可以在不实际保存文件的情况下获取内容,是否有任何其他内置方式在.Net中构建MIME消息,从单独的字段(从,到,主题,正文) ,附件),我不坚持一种方法,将MailItem立即转向MIME消息(虽然它会很好,但至少能够设置一些对象的属性,并获得构造的消息)以后呢?
非常感谢!
答案 0 :(得分: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.
然后我在Code Project中使用本文中的一些代码: Adding Save() functionality to Microsoft.Net.Mail.MailMessage
除了我用MemoryStream替换了FileStream。 似乎工作得很好。