有谁知道如何使用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
答案 0 :(得分:4)
包含签名的全功能电子邮件功能,使用上述答案中的代码:
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
然后致电
Emailer("Hi there, how are you?", "Subject", "david@bisnode.com")
答案 1 :(得分:3)
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.GetInspector
mail.HTMLBody现在包含您需要与自己的HTML合并(而不仅仅是连接!)的消息签名
更新:截至Outlook最新版(2016年夏季版),GetInspector技巧不再适用。现在只有MailItem.Display
将签名添加到未修改的消息中
如果要以编程方式插入签名,Redemption公开实现ApplyTo
方法的RDOSignature对象(它处理签名图像文件并适当地合并HTML样式)。
答案 2 :(得分:0)
如果您将签名设置为默认值,则应该能够执行此操作。
>>> signature = message.body
>>> message.body = "ahoj\n" + signature
如果您的签名包含图片,您也可以使用message.HTMLbody
。
如果将其设置为默认值,则签名应始终出现在消息中。您会将正文的当前内容保存到签名变量,然后将其添加到消息的末尾。至少对我有用。
答案 3 :(得分:0)
您可以在 Outlook 中找到以 HTML 文件形式存储在 %APPDATA%\Microsoft\Signatures 中的签名,我使用以下代码复制文件内容并将它们添加到我的电子邮件正文中
import win32com.client
import os
signature_path = os.path.join((os.environ['USERPROFILE']),'AppData\Roaming\Microsoft\Signatures\Work_files\\') # Finds the path to Outlook signature files with signature name "Work"
html_doc = os.path.join((os.environ['USERPROFILE']),'AppData\Roaming\Microsoft\Signatures\Work.htm') #Specifies the name of the HTML version of the stored signature
html_doc = html_doc.replace('\\\\', '\\') #Removes escape backslashes from path string
html_file = codecs.open(html_doc, 'r', 'utf-8', errors='ignore') #Opens HTML file and ignores errors
signature_code = html_file.read() #Writes contents of HTML signature file to a string
signature_code = signature_code.replace('Work_files/', signature_path) #Replaces local directory with full directory path
html_file.close()
olMailItem = 0x0
outlook = win32com.client.Dispatch("Outlook.Application")
newMail = outlook.CreateItem(olMailItem)
newMail.CC = "my@email.com"
newMail.Subject = subject
newMail.BodyFormat = 2 # olFormatHTML https://msdn.microsoft.com/en-us/library/office/aa219371(v=office.11).aspx
newMail.HTMLBody = "Email Message" + signature_code
newMail.display()