如何使用任何 Windows 自动化向 Outlook 文本框添加一些文本?

Posted

技术标签:

【中文标题】如何使用任何 Windows 自动化向 Outlook 文本框添加一些文本?【英文标题】:How I can add some text to Outlook textbox using any windows automation? 【发布时间】:2020-08-07 15:57:53 【问题描述】:

我想使用 C# 中的任何 Windows 自动化技术向 Outlook 的撰写邮件部分添加一些文本。它应该保留它的字体属性,这意味着输入的新文本应该是用户在他的 Outlook 中定义的格式。

以前我使用的是 SendKeys.Send() 方法,但它不可靠,因为它们无法确定是否会生成文本。

我尝试使用 user32.dllSystem.Windows.Automation 但无法实现。

有人可以帮帮我吗?一个小的测试脚本会有很大帮助。

提前致谢。

【问题讨论】:

【参考方案1】:

您可以使用 COM 自动化技术在 Outlook 中自动执行任务。请参阅 MSDN 中的 Automate Outlook by using the Outlook object model 部分。

设置 Outlook 项目的正文主要有三种方式:

    Body 属性(纯文本)。 htmlBody 属性 - 允许使用 HTML 标记自定义正文,如上所示。 Word 对象模型。 Outlook 默认使用 Word 作为电子邮件编辑器。 Inspector 类的 WordEditor 属性返回一个 Document 类的实例,它代表正文。

您可以在Chapter 17: Working with Item Bodies 中阅读有关这些方式的更多信息。

如您所见,只有最后两个允许您完成任务。

例如,以下示例代码使用 Word 对象模型将文本字符串插入到新创建项目的消息正文中:

using Outlook = Microsoft.Office.Interop.Outlook;
using Word = Microsoft.Office.Interop.Word;
namespace CreateAndEditMailItemUsingWord

    class Program
    
        static void Main(string[] args)
        
            Outlook.MailItem mailItem = (new Outlook.Application()).CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
            Word.Document wordDocument = mailItem.GetInspector.WordEditor as Word.Document;
            // Insert the text at the very beginning of the document
            // You can control fonts and formatting using the ParagraphFormat propety of the Word.Range object
            Word.Range wordRange = wordDocument.Range(0, 0);
            wordRange.Text = "Please insert your text here";
            mailItem.Display();
        
    

【讨论】:

感谢@EugeneAstaflev,我为现有的新邮件窗口尝试了此代码。该代码适用于新邮件并在它们是新窗口时回复,我在其中使用检查器: Outlook.MailItem mailItem = currentOutlookWindow.ActiveInspector().CurrentItem as Outlook.MailItem;但是,当用户在单个 Outlook 窗口中回复时,我无法获得检查员。我该怎么做? 正确。您需要改用Explorer.ActiveInlineResponse 属性。 我试过: Outlook.MailItem inLineMailItem = this.Application.ActiveExplorer().ActiveInlineResponse as Outlook.MailItem 但这会引发错误 System.NullReferenceException。简单地说,无法获得该项目。另外,我想检查是否在新的 Outlook 窗口或 ActiveInlineResponse 中按下了回复按钮(或者我们可以说 - 邮件 Outlook 窗口)。可能吗? @EugeneAstafiev 您可以重新调整功能区上的回复按钮的用途。或者您可以处理Reply 事件。 抱歉,不明白。

以上是关于如何使用任何 Windows 自动化向 Outlook 文本框添加一些文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何对无法加载的 VSTO 插件进行故障排除?

我如何向 windows 询问 RAM 是在单通道、双通道还是四通道中运行?

如何生成 Windows 证书,以便我的 msi 不会向用户显示警告 [重复]

如何从windows系统向linux系统传送文件

windows启动时如何启动xampp v3.2.1自动启动?

Windows Universal现有应用程序向SQLite表添加新列