【问题标题】:Python adding hyperlink to Outlook task through win32comPython通过win32com向Outlook任务添加超链接
【发布时间】:2019-09-13 03:26:06
【问题描述】:

我想在通过 win32com 创建的任务正文中创建一个超链接。

这是我目前的代码:

outlook = win32com.client.Dispatch("Outlook.Application")
outlook_task_item = 3
recipient = "my_email@site.com"
task = outlook.CreateItem(outlook_task_item)
task.Subject = "hello world"
task.Body = "please update the file here"
task.DueDate = dt.datetime.today()
task.ReminderTime = dt.datetime.today()
task.ReminderSet = True
task.Save()

我尝试设置属性task.HTMLBody,但出现错误:

AttributeError: Property 'CreateItem.HTMLBody' can not be set.

我也试过了

task.Body = "Here is the <a href='http://www.python.org'>link</a> I need"

但我没有得到正确的超链接。

但是,如果我在 Outlook 中创建任务前端,我可以添加超链接。

【问题讨论】:

    标签: python outlook win32com


    【解决方案1】:

    你也可以试试:

    task.HTMLBody = "Here is the <a href='http://www.python.org'>link</a> I need"
    

    这会将“task.Body”中的数据覆盖为“task.HTMLBody”中提供的 HTML 格式

    所以最后一个(Body 或 HTMLBody)将被视为邮件的正文。

    【讨论】:

      【解决方案2】:

      任务不支持 HTML。相反,您必须提供 RTF。

      您可以通过task.RTFBody(和task.RTFBody.obj 方便地查看它)调查——但不能设置——给定任务的RTF。要在任务主体中使用 RTF,只需使用 task.Body 属性;将此设置为包含 RTF 的字节数组将自动在正文中使用该 RTF。具体来说,要得到你想要的身体,你可以让

      task.Body = rb'{\rtf1{Here is the }{\field{\*\fldinst { HYPERLINK "https://www.python.org" }}{\fldrslt {link}}}{ I need}}'
      

      【讨论】:

      • 甜!!!我确实尝试过设置 RTFbody 没有运气。多谢。快速提问,你知道我为什么要放类似 "c:\üsers\...\documents\..." 的东西,超链接将我发送到 "c:\users\...\desktop\... 代替?
      • 只是为了关闭圆圈,超链接需要用双\\指定,如果路径无法识别,您将被发送到桌面。所以在我的情况下,路径无法识别,我被发送到桌面而不是我的文档。
      • @GiuseppeBonavita:请注意,这些将是原始字符串文字的标准用例; r'C:\users\username\documents' 允许您传入单个反斜杠(参见答案中的示例正文)。
      • 我将 rb 前缀留给了字符串,据报道,我被发送到了桌面文件夹。然后我发现需要两个反斜杠。在我的情况下,消息的正文和链接位于一个由 pandas 处理的 excel 文件中。根据excel文件中的内容,我想发送一个任务,可能带有超链接。
      猜你喜欢
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      • 2020-05-08
      • 1970-01-01
      相关资源
      最近更新 更多