使用win32com使用python将签名添加到Outlook电子邮件

Mic*_*vid 2 python outlook win32com

有谁知道如何使用win32com在电子邮件中添加电子邮件签名?

import win32com.client as win32
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = 'TO'
mail.Subject = 'SUBJECT'
mail.HTMLbody = 'BODY'
mail.send
Run Code Online (Sandbox Code Playgroud)

Dmi*_*nko 7

Outlook 签名不通过 Outlook 对象模型公开。您能做的最好的事情就是从文件系统中读取签名并将其内容适当地添加到 HTML 正文中。请记住,两个 HTML 字符串必须合并,而不仅仅是连接。您还需要合并两个 HTML 文档的样式并处理签名使用的嵌入图像。

请注意,当显示未修改的邮件或触摸其检查器时,Outlook 会添加签名

import win32com.client as win32
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = 'TO'
mail.Subject = 'SUBJECT'
mail.Display
Run Code Online (Sandbox Code Playgroud)

mail.HTMLBody现在包含您需要与您自己的 HTML 合并(不仅仅是连接!)的消息签名

更新:截至最新(2016 年夏季)版本,该Outlook, GetInspector技巧不再有效。现在仅MailItem.Display将签名添加到未修改的消息中。
如果您想以编程方式插入签名,Redemption(我是其作者)会公开实现方法的RDOSignature对象ApplyTo(它处理签名图像文件并适当地合并 HTML 样式)。


Dav*_*vid 5

使用上面答案中的代码,具有签名的功能齐全的电子邮件功能:

def Emailer(message, subject, recipient):
    import win32com.client as win32   

    outlook = win32.Dispatch('outlook.application')
    mail = outlook.CreateItem(0)
    mail.To = recipient
    mail.Subject = subject
    mail.GetInspector 

    index = mail.HTMLbody.find('>', mail.HTMLbody.find('<body')) 
    mail.HTMLbody = mail.HTMLbody[:index + 1] + message + mail.HTMLbody[index + 1:] 

    mail.Display(True)
    #mail.send #uncomment if you want to send instead of displaying
Run Code Online (Sandbox Code Playgroud)

然后打电话

Emailer("Hi there, how are you?", "Subject", "david@bisnode.com")
Run Code Online (Sandbox Code Playgroud)