2015-12-02 158 views
0

我必须通过python发送邮件。有用。这几乎完成了。唯一的问题是我必须保持格式。所以要么我必须发送电子邮件为HTML(然后用html而不是.docx重写模板)或复制.docx文件,扩展名为 任何人有任何想法如何做到这一点?多谢你们。PYTHON/OUTLOOK通过PYTHON与DOCX发送电子邮件

import win32com.client as win32 
import fileinput as fi 
from docx import Document 

outlook = win32.Dispatch('outlook.application') 

path_in = 'maillist.csv' 
input_file = open(path_in, 'r') 
document = Document('template.docx') 
document_html = open('template.html', 'r') 

print(temp) 
def filecount(fname): 
     for line in fi.input(fname): 
      pass 
     return fi.lineno() 

print("Total mails %s" % (filecount(path_in))) 
count = 0 
for line in input_file: 
    if (count>16): 
     name = line.split(";")[0] 
     mail_adress = line.split(";")[1] 
     subject = line.split(";")[2] 
     print ("%s:%s:%s:" % (name, mail_adress, subject)) 
     mail = outlook.CreateItem(0) 
     mail.To = mail_adress 
     mail.Subject = subject 
     mail.body = temp.replace("XXXNAMEXXX", name) 
     mail.send 
    else: 
     count+=1 

回答

0

尝试添加.RTFBody和/或.HTMLBody方法的文档对象:

document = Document('template.docx').RTFBody 
    document_html = open('template.html', 'r').HTMLBody 

而且,我不知道,如果它使多大的差别,但对于约定的缘故,我喜欢将该方法的第一个字母大写为mailItem对象。

让我知道这是否有效。