如何使用任何 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.dll 和 System.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 文本框添加一些文本?的主要内容,如果未能解决你的问题,请参考以下文章
我如何向 windows 询问 RAM 是在单通道、双通道还是四通道中运行?
如何生成 Windows 证书,以便我的 msi 不会向用户显示警告 [重复]