问题标签 [oft]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
15253 浏览

email - Outlook .MSG 和 .OFT 文件格式之间有区别吗?

这个问题有点长镜头,但我花了几个小时无济于事。我有一些代码可以在网络服务器上生成电子邮件文件,并允许用户下载该电子邮件并在 Outlook 中打开它。从这里,他们可以在将电子邮件发送给一群人之前对电子邮件进行各种手动更改。

现在,我生成了一个 .OFT 文件,它基本上是一个电子邮件模板。我想做的是生成一个 .MSG 文件,这是一封实际的电子邮件。从二进制的角度来看,这些文件格式似乎是相同的。它们具有相同的流 ID 和属性等。

我的方法是首先在 Outlook 中创建一个空白电子邮件,然后将其保存到一个名为 Base.oft 的文件中。在我的代码中,我打开文档并修改 Stream ID __substg1.0_1013001E,它是 HTML 电子邮件正文的 ID。然后我保存文件并将其写入 cilent。这完美地工作。

我尝试了使用 MSG 格式的相同方法。我创建了一个空白电子邮件,将其保存为 Base.msg,并修改了相同的 Stream ID。如果我查看生成的文件,新的正文实际上就在那里并保存了。但是,如果我打开电子邮件,正文仍然是空白的。

更奇怪的是,如果我在 Outlook 中输入正文并将其保存到基本文件中,我可以在流 0_1013001E 下看到该正文。如果我随后用不同的正文修改该流,我可以验证新正文确实保存在文件中,但如果我在 Outlook 中打开邮件,我会看到旧的原始正文。就好像电子邮件正文存储在 .MSG 格式的文件中的不同位置一样,但是我查看了每个流,找不到任何其他看起来可能是电子邮件正文的内容。

也许 .MSG 文件是加密的,或者它们的主体以某种专有的二进制格式存储,而不是 .OFT 文件?希望有人对此有所了解,因为我在互联网上搜索并基本上没有发现这些格式。

更新:

似乎 .MSG 格式将主体存储在 Stream ID 中__substg1.0_10090102- 它以某种二进制形式编码(不确定是什么。)如果我删除流(或将其设置为单个\0,文件将损坏。

0 投票
2 回答
821 浏览

c# - 使用 Outlook .OFT 文件修改文件附件流时出现问题

我正在尝试以编程方式替换 OFT 文件(Outlook 消息模板)中的嵌入图像,该文件采用复合文件二进制格式(因为使用任何人类可读的东西都会让我的生活变得太容易)。

为了处理这个文件,我使用了 OpenMCDF

由于嵌入的图像基本上是文件附件,我可以像这样获取图像的流:

然后,我可以使用所需图像中的字节更新该流,如下所示:

但是,当我在 Outlook 中加载 .OFT 文件时,图像不再加载,并且我得到一个红色 X 表示无法加载图像。我花了几个小时分析那个 OFT 文件的每一点,然后原始模板和新模板之间唯一改变的是我替换的一个流。

这就是事情变得奇怪的地方:

我注意到我可以用我以前拥有的完全相同的字节替换字节并保存它,所以我的保存机制正在工作。我想也许 OFT 模板存储了某种必须匹配的图像散列。所以我修改了一些随机字节,图像仍然加载(有时带有一些时髦的颜色)。最终,我意识到只有当新图像包含的字节数少于原始图像时,它才会中断。我可以用更大的图像替换图像,这很有效!我也可以在流的末尾用尾随零填充一个较小的图像,它仍然有效。

这让我想出了一个真正的黑客杰作:

基本上,如果img2太小,我会填充足够的字节以使其与原始图像大小相同(准确地说是 5585 字节)。所以这行得通。但是..是的。

我的问题:

Microsoft OFT 文件格式是否将附件的字节数存储在其他流或其他 CDF 容器中?如果这是 CDF 的标准属性,您会认为 OpenMCDF 会更新此计数。这让我相信这是 OFT 文件格式的一个属性,OpenMCDF 当然对此一无所知。

为什么写入较小的流会损坏文件,而写入较大的流可以工作?

更新:

从我目前所的内容来看,该__properties_version1.0流包含一个指针列表(偏移量?),以标记各种其他流的位置。我猜这里有些东西需要更新。目前,我在附件容器中有这些流:

在此处输入图像描述

据我所知__properties_version1.0,第一个附件(一个 36,463 字节的文件)和第二个附件(一个 5,585 字节的文件)之间几乎没有变化。第二__properties_version1.0个附件是:

在此处输入图像描述

这两个附件之间只有一组 8 个字节的变化。在附件 1 中,我们有:

6F 8E 00 00 03 00 2D 00

在附件 2(如上图)中,我们有:

D1 15 00 00 03 00 6F 08

这些是偏移量吗?似乎不是一个范围,否则数字会上升。这些数字也太大而不能成为文件大小。另外,无论如何在这里存储文件大小似乎是多余的。所以,我再次不知道为什么改变0x37010102流的大小会导致图像不再加载。

另一件零意义的事情。我可以使用更大或更小的文件更改第一个附件的大小,并且没有任何中断。但是,这两个容器中的任何流之间绝对没有区别,除了流中的数据0x37010102。为什么这种方法在一个附件中起作用,而在另一个附件中不起作用?

更新 2:

我注意到__properties_version1.0两个附件之间的流中的两个差异确实对应于文件大小:

6F 8E似乎是文件大小的小端表示,因为十进制的 8E6F 将是 36463,这是第一个附件中的字节数。十进制的 15D1 是 5585,即第二个附件的大小。所以,这个流肯定是存储文件大小。现在看看如果文件未损坏,我是否修复了这些字节。

更新 3:

因此,更改这些字节可以修复以前损坏的文件,这就是关键!现在只是想找到一种以编程方式执行此操作的方法。

0 投票
1 回答
1336 浏览

vb.net - 打开 Outlook OFT 模板并填写收件人地址

在 Windows 窗体应用程序和 VB.NET 中工作。

我需要弹出一个 Office“新消息”窗口,填充“收件人”地址,然后在消息正文中放置一个 OFT 模板。我不需要修改模板中的任何内容。

要使用模板打开新消息,我可以:

但这无助于设置 TO 地址或主题。

我也不想下载任何第三方插件。

有什么帮助吗??

0 投票
0 回答
248 浏览

email - 保存 OFT 电子邮件模板时的 Outlook 2013 Munging 图像标记

除了所有用于生成 OFT 电子邮件的技巧、技巧等之外,还有没有办法通过标记来禁止 Outlook 注入它的漂亮占位符标记(我假设在编辑模式下便于浮动格式按钮? )

我和我的团队已经尝试了所有尝试过的真正方法:

  1. 将呈现的电子邮件/页面从浏览器(尝试过 IE、Google、FF)复制/粘贴到 Outlook 中的新电子邮件中
  2. 发送给自己
  3. 将收到的另存为 OFT
  4. 如有必要,打开保存的 OFT,发送给自己、Google、Yahoo 和任何其他电子邮件客户端

问题归结为 Outlook 采用如下所示的标记:

当它节省了 OFT 时,把它变成了这样的东西:

问题是浏览器客户端现在将附加内容读取为空格并在图像下方显示填充。

TIA。

0 投票
1 回答
1034 浏览

vba - 打开模板时运行宏

我在 Outlook 模板中有一个宏(经常)。它会更改邮件主题和正文中的某些文本。我想知道当我打开模板时是否可以让这个宏自动执行。

提前谢谢你,桑蒂

0 投票
1 回答
1462 浏览

php - PHP 经常将 html 导出到 Outlook

我们使用内部软件为客户生成 html 模板。我们花了很多时间教我们的客户如何保存模板。我们正在尝试寻找一种将 html 导出到 .oft 模板的方法。

创建文件很容易,但文件的加密或编码让我们陷入了一个循环。

是否有我们可以用来转换 html 文件的库或代码?我们更喜欢使用 php,但如果需要,我们可以使用其他语言。

0 投票
2 回答
4628 浏览

vba - 使用 Excel VBA 从模板在 Outlook 2010 中创建电子邮件

我的代码在 XP 上的 Excel/Outlook 2003 中运行良好,我现在正在运行 Windows 7 Excel/Outlook 2010 并收到错误消息:

运行时错误“287”:应用程序定义的或对象定义的错误。

我的代码基于以下答案: Send an email from Excel 2007 VBA using an Outlook Template & Set Variables

我正在创建我的 Outlook 对象和 mailitem,如下所示:

我引用后出现错误MyOlItem,代码正在替换中的引用.htmlBody

修改为.Body没有区别,同样的错误显示。

我在 VBA 中的引用设置为:

  • VBA
  • Microsoft Excel 14.0 对象库
  • OLE 自动化
  • Microsoft Office 14.0 对象库
  • Microsoft Forms 2.0 对象库
  • Microsoft 脚本运行时
0 投票
2 回答
1522 浏览

vba - 使用 VBA 代码编辑 OFT

我正在尝试使用 vba 代码编辑 OFT

这是我收到错误 287 的地方(我的系统是法语)

有人有线索吗?

0 投票
2 回答
2279 浏览

html - 在 Outlook 中打开 .OFT 的超链接

我有一些 Outlook .oft 模板文件上传到 Web 服务器。

是否可以创建指向将导致它们在 Outlook 中打开的单个文件的链接?

到目前为止,我只设法创建直接将它们下载到文件夹的 HTML 链接。

是否可以创建一个链接,将 .oft 文件与 Outlook 相关联,因此执行它并将其作为准备发送的电子邮件打开。

谢谢

0 投票
1 回答
1295 浏览

c# - 在 ASP.Net MVC 应用程序中创建 Outlook 模板 (.oft) 文件

我需要在 ASP.Net MVC4 Web 应用程序(使用 C#)中将 html 模板下载为 OFT 文件。我已经尝试过 Microsoft.Office.Interop.Outlook,它在我的本地机器上运行良好,但在服务器上运行失败。它需要在服务器中安装 Outlook,而且我还听说在服务器中为 Web 应用程序自动化 MS Office 应用程序并不是一个好习惯。是否可以在不使用 MS Office Outlook 的情况下创建一个经常文件?有没有免费的图书馆可以做到这一点?任何人都知道解决方案,请帮助。