从Python执行的Outlook邮件模板中删除签名

时间:2019-07-31 17:42:10

标签: python-3.x outlook win32com

我编写了一个程序,该程序从共享驱动器中打开.oft文件,并将所需的电子邮件ID放入“收件人”字段,并且还可以编辑主题字段。 但是,当邮件显示时,总是会添加我的默认签名。现在,我要将此脚本部署到多个用户,并且邮件不需要具有用户签名,因为模板已经预定义了组签名。

我已经搜索并发现没有邮件。Outlook中的签名可以通过它进行修改。

import win32com.client as win32  


outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItemFromTemplate(r'\\Server\Share\Folder\maial.oft')
mail.To = 'someone@exapmle.com'
mail.Subject = 'Test'
mail.Display(True)

有什么方法可以限制Outlook使用python在邮件中添加默认签名吗?

2 个答案:

答案 0 :(得分:0)

签名被作为单独的文件保存在Signatures文件夹中。您可以在以下位置找到该文件夹​​:

  • Windows XP
     C:\Documents and Settings\%username%\Application Data\Microsoft\Signatures
  • Windows Vista,Windows 7,Windows 8和Windows 10
     C:\Users\%username%\AppData\Roaming\Microsoft\Signatures

要查看此文件夹,您必须启用View hidden files and folders,或者只需将以上路径复制并粘贴到资源管理器中的地址栏中即可直接打开该文件夹。

您可以从指定的文件夹中读取签名,并在邮件正文中找到它们(请参见HTMLBody属性),这样您便知道应该删除哪些内容。

答案 1 :(得分:0)

由于签名是整个电子邮件正文(.HTMLbody)的一部分,所以我意识到我可以用空格“初始化”它,而只需用所需的内容“返回”即可。如果您使用的.GetInspector默认情况下始终包含活动Outlook用户帐户的指定电子邮件签名,这将特别有用。

因此您可以这样做:

mail.HTMLbody = ''

然后

mail.HTMLbody = '<Insert desired content>' #This overwrites the previous one

和/或通过.GetInspector粘贴某些内容,例如Word文档内容:

msg.GetInspector.WordEditor.Range(Start=0, End=0).Paste() #This seems to append, not overwrite

有关将Word文档复制到Outlook中的更多信息,请参见此post

-编辑-

由于OP使用的是模板,因此电子邮件签名似乎在模板本身内(Outlook并未通过.GetInspector调用---这是我的实际情况),我想到的两个可能的解决方案是< / p>

  1. 通过创建不带sig的副本来摆脱它,然后将修改后的副本发送到Outlook。

  2. 继续使用模板,但通过.GetInspector指定范围(不包括电子邮件sig)