bujimingjiayixian

python调用outlook发送exchange邮件(含附件)

最近在解决一个问题,就是生成每日数据的报表,然后利用邮件群发给各位同事。由于主要工作不在这,为了节省时间,所以选择了使用python语言。

选择发送邮件时,有人可能会说直接使用smtp库不就行吗?为啥要调用outlook多此一举。事情是这样的,我所用的邮箱禁止使用smtp和pop3连接邮件,只能使用exchange的方式连接。而且使用python如何通过exchange方式连接邮件,一直没能查得到资料,所以使用win32调用outlook的方式群发邮件。

具体如何调用outlook发送邮件,我就不多说了,给大家推荐一篇文章:http://blog.163.com/yang_jianli/blog/static/16199000620138922841273/ ,我把代码也放下面了,这个说得很清楚,我就是直接抄的,现在我要说的是如何发送附件,这篇文章里面没有,而且也找不到现成的代码(百度上能搜到一个,但是试了不行,根本不对)。

经过查询MSDN的资料,终于知道了outlook的attachments如何使用:

Sub AddAttachment() 
 Dim myItem As Outlook.MailItem 
 Dim myAttachments As Outlook.Attachments 
 
 Set myItem = Application.CreateItem(olMailItem) 
 Set myAttachments = myItem.Attachments 
 myAttachments.Add "C:\Test.doc", olByValue, 1, "Test" 
 myItem.Display 
End Sub

其中olByValue是附件的类型,有四种值,具体有哪四种大家可以到MSDN官网上查询,这里直接设置成1,意思是附件是原文件的一份拷贝。于是我照这个示例在下面的程序里面添加了两行红色加粗的代码,这样附件就能发出去了。

#coding:utf-8

import win32com.client as win32

def outlook():
app= ‘Outlook’
olook = win32.gencache.EnsureDispatch(“%s.Application” % app)
mail=olook.CreateItem(win32.constants.olMailItem)
mail.Recipients.Add(‘jianl@163.com’)

mail.Subject = ‘21112Python -to – %s ‘ %app

    myAtt=mail.Attachments
    myAtt.Add(r‘c:\abc.txt’,1,1,”myFile”)

mail.Body =’body’
mail.Send()
print “send ok”



发表评论

电子邮件地址不会被公开。 必填项已用*标注