【发布时间】:2012-01-01 00:42:32
【问题描述】:
所以我对这个话题进行了很多研究。 有一个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 消息的方法(尽管如果有的话会很好)但至少能够在某些对象上设置属性并获取构造的消息以后没了?
非常感谢!
【问题讨论】:
-
几年前我很幸运 dimastr.com/redemption 使用 VSTO,尽管我不想声称这在今天仍然有用,它可能会有所帮助。赞成,因为我也对您找到的解决方案非常感兴趣。
-
谢谢,史蒂夫!现在(除非有人想出一个真正好的解决方案)我将使用 SmtpClient 来做脏活,然后我使用代码项目文章作为基础来欺骗 SmtpClient 给我消息的实际内容而无需将其保存到磁盘。这有点棘手,但它奏效了。
标签: email outlook outlook-addin smtpclient mime-message