c# VSTO Outlook外发消息超链接
本文关键字:消息 超链接 VSTO Outlook | 更新日期: 2023-09-27 18:06:57
我正在为Outlook 2010创建一个c# VSTO插件。我试图在正在处理的活动传出消息的插入点生成超链接(超链接通过消息窗口ribbon上的按钮插入)。插件的所有其他功能(功能区按钮,访问ActiveInspector().CurrentItem
等)都可以正常工作。我正在使用这个代码:
object linktext = txtDisplayText.Text;
object result = "MY URL";
object missObj = Type.Missing;
Outlook.MailItem currentMessage =
Globals.ThisAddIn.Application.ActiveInspector().CurrentItem;
Word.Document doc = currentMessage.GetInspector.WordEditor;
object oRange = doc.Windows[1].Selection;
doc.Application.Selection.Hyperlinks.Add
(oRange, ref result, ref missObj, ref missObj, ref linktext, ref missObj);
当我运行这段代码时,我得到消息"命令失败。"我怀疑我在Outlook如何使用Microsoft Word的Outlook消息编辑器或我在oRange
中指定选择对象的方式方面错过了一些东西。
这个问题确实是由Hyperlinks.Add
命令定义选择的方式引起的。而不是对象类型,选择需要键入为Microsoft Word选择(由于Outlook使用Word作为其编辑器):
Word.Selection objSel = doc.Windows[1].Selection;
因此,为了在合成期间在Outlook消息的插入点插入超链接,代码对Word和Outlook都使用了using语句:
using Outlook = Microsoft.Office.Interop.Outlook;
using Word = Microsoft.Office.Interop.Word;
然后这个代码:
object linktext = txtDisplayText.Text;
object result = "MY URL";
object missObj = Type.Missing;
Outlook.MailItem currentMessage =
Globals.ThisAddIn.Application.ActiveInspector().CurrentItem;
Word.Document doc = currentMessage.GetInspector.WordEditor;
Word.Selection objSel = doc.Windows[1].Selection;
doc.Hyperlinks.Add
(objSel.Range, ref result, ref missObj, ref missObj, ref linktext, ref missObj);
还有两个值得注意的调整。因为使用了Word.Selection
类型作为超链接的锚,所以需要将Hyperlinks.Add
命令从doc.Application.Selection.Hyperlinks.Add
更改为doc.Hyperlinks.Add
。由于Outlook使用微软的Word编辑器,doc.Hyperlinks.Add
的锚点使用了一个范围:objSel.Range
.
使用MailItem类的HTMLBody属性来修改ItemSend事件处理程序中的消息主体(插入超链接)。您需要找到粘贴超链接<a href=.../>
的位置,修改HTML格式良好的字符串并将其分配回去。