1

在我当前的 MVC 项目中,需要通过单击带有预填充正文和主题的按钮来打开一个新的 Outlook 邮件项目。

我使用了以下方法来实现这一点: 1. 创建一个带有所需详细信息的 MailItem,如主题、邮件正文等 2. 使用 SmtpDeliveryMethod 作为 SpecifiedPickupDirectory 并创建一个 eml 文件 3. 强制用户下载并在 Outlook 中打开文件

到目前为止一切顺利,EML 文件在 Outlook 中正确打开,但用户必须从“发件人下拉菜单”中手动选择他的邮件帐户。

我的问题是有什么方法可以在 EML 文件中分配 detault From 帐户以便在 Outlook 2010 中打开

4

2 回答 2

2

我绕过它的方式,至少可以说是“hacky”,是在 C# 中打开保存的 .eml 并删除所有 from/sender 值,然后再将其流式传输到浏览器。

我有一个 aspx 页面,它接受一堆允许您自定义 .eml 输出的查询字符串参数。如果没有“发件人”或“发件人”电子邮件地址,您将无法保存 .eml 文件,因此您需要先将其保存 - 我使用的是虚拟电子邮件帐户。您可以使用SMTP 提取方法MailMessage扩展类来保存 .eml 文件。然后我打开保存的文件,查找我的占位符电子邮件地址(在“X-Sender”标题和“From”值中),将其替换为空字符串,然后将更改后的流发送到浏览器。用户永远不会获得“来自”下拉菜单,它只是使用默认帐户。奇迹般有效。

于 2014-01-14T17:51:02.750 回答
0

不,您不能对 EML 文件执行此操作。为什么不创建一个味精文件?然后设置帐户是设置几个 MAPI 属性的问题。

你使用什么编程语言?运行代码的机器上是否安装了 Outlook?

编辑:

如果您需要创建一个味精文件,您的选择是

  1. Outlook 对象模型 - 如果 Outlook 文件夹之一中有现有邮件,请调用 MailItem.SaveAs(..., olMsg)。
  2. 以编程方式创建 MSG 文件 - 它的格式已记录在案
  3. 对于 C++ 或 Delphi,您可以使用扩展 MAPI(OpenImsgOnIStg等)
  4. Redemption及其RDOSession .CreateMessageFromMsgFile 方法(返回您可以用来设置各种属性并调用 RDOMail.Save 的 RDOMail 对象)
于 2013-12-04T13:59:21.867 回答