37,719
社区成员
发帖
与我相关
我的任务
分享
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email import Encoders
from email import encoders
import mimetypes,sys
import os
class IMessagePtr:
From = ""
charSet = ""
MailServerUserName = ""
MailServerPassWord = ""
msgRoot = MIMEMultipart()
vecRecv = []
vecCopy = []
def setUserName(self,userName):
self.MailServerUserName = userName
def setPassWord(self,passWord):
self.MailServerPassWord = passWord
def setFrom(self,name):
self.From = name
def setCharSet(self,CharSet):
self.charSet = CharSet
def AddRecipient(self,name):
self.vecRecv.append(name)
def AddRecipientCC(self,name):
self.vecCopy.append(name)
def SetSubject(self,subject):
self.msgRoot['Subject'] = subject
def AddBody(self,Text):
body = MIMEText(Text,'plain',self.charSet)
self.msgRoot.attach(body)
def AddAttachment(self,path):
ctype,encoding = mimetypes.guess_type(path)
if ctype is None or encoding is not None:
ctype='application/octet-stream'
maintype,subtype = ctype.split('/',1)
#att=MIMEImage(open(filename,'r').read(),subtype)
att=MIMEImage(open(path, 'rb').read(),subtype)
print ctype,encoding
att["Content-Disposition"] = 'attachmemt;filename="THS_alpha_20130718.exe"'
#msg.attach(att)
#part = MIMEBase('application', 'octet-stream')
#part.set_payload(open('E:\\xyp\\python小程序\\THS_alpha_20130718.rar','rb').read())
#Encoders.encode_base64(part)
#part.add_header('Content-Disposition', 'attachment; filename="THS_alpha_20130718.rar"')
#att = MIMEImage(open("E:\\xyp\\python小程序\\THS_alpha_20130718.rar",'rb').read(),'octet-stream')
#att = MIMEText(open('E:\\xyp\\python小程序\\新建文件夹.rar', 'rb').read(), 'base64', 'gb2312')
#att["Content-Type"] = 'application/octet-stream'
#att["Content-Disposition"] = 'attachment; filename="新建文件夹.rar"'
self.msgRoot.attach(att)
print path
# 读入文件内容并格式化,此处文件为当前目录下,也可指定目录 例如:open(r'/tmp/123.txt','rb')
## 设置附件头
def getStrFromList(self,lStr):
listLen=len(lStr)
resultStr=lStr[0]
i=1
while(i<listLen):
resultStr=resultStr+','+lStr[i]
i=i+1
return resultStr
def sendMail(self,stmpServer):
self.msgRoot['From']=self.From
self.msgRoot['To'] = self.getStrFromList(self.vecRecv)
#print self.msgRoot['To']
self.msgRoot['CC'] = self.getStrFromList(self.vecCopy)
smtp = smtplib.SMTP()
try:
smtp.connect(stmpServer)
smtp.ehlo()
smtp.starttls()
smtp.ehlo()
smtp.set_debuglevel(1)
self.vecRecv.extend(self.vecCopy)
smtp.login(self.MailServerUserName,self.MailServerPassWord)
smtp.sendmail(self.From,self.vecRecv,self.msgRoot.as_string())
#smtp.sendmail(self.From,self.vecCopy,self.msgRoot.as_string())
except Exception :
smtp.quit()
return str(e)
smtp.quit()
return 1;
import poplib
from email import parser
import base64
import types
class IPOP3Ptr:
pop_conn = 1
userName = ""
def Connect(self,userName,passWord,host):
self.pop_conn = poplib.POP3_SSL(host)
try:
self.pop_conn.user(userName)
self.userName = userName
self.pop_conn.pass_(passWord)
return 0
except poplib.error_proto:
return -1
messages = 1
def getMessages(self):
self.messages = [self.pop_conn.retr(i) for i in range(1, len(self.pop_conn.list()[1]) + 1)]
self.messages = ["\n".join(mssg[1]) for mssg in self.messages]
self.messages = [parser.Parser().parsestr(mssg) for mssg in self.messages]
return self.messages
def getStrFromBase64(self,str1):
if(type(str1) == types.NoneType):
return ""
str_decode = ['=?UTF-8?B?','=?utf-8?b?','=?GB2312?B?','=?gb2312?B?']
result=""
strLen = len(str1)
for strDecode in str_decode:
strDecodeLen = len(strDecode)
numNext = str1.find(strDecode)
if(numNext != -1):
while(numNext != -1):
result = result + str1[:numNext]
strTemp = str1[(strDecodeLen + numNext - strLen):]
numPre = strTemp.find('?=')
if(numPre != -1):
strTemp = strTemp[:(numPre+2)]
strTemp = base64.b64decode(strTemp)
result = result + strTemp
str1 = str1[(strDecodeLen + numNext+2+numPre):]
strLen = len(str1)
numNext = str1.find(strDecode)
return result
#截取
return str1
def getMsgFrom(self,num):
mailFrom = self.messages[num]['From']
mailFrom = self.getStrFromBase64(mailFrom)
return mailFrom
def getMsgSubject(self,num):
subject = self.messages[num]['Subject']
subject = self.getStrFromBase64(subject)
return subject
def getMsgBody(self,num):
for part in self.messages[num].walk():
contentType = part.get_content_type()
if contentType == 'text/plain':
data = part.get_payload(decode = True)
return data
def getMsgCount(self):
count = len(self.messages)
#print count
return count
def getMsgUID(self,num):
strTemp = self.userName+hex(num)+self.getMsgFrom(num)
UID = base64.encodestring(strTemp)
return UID
def deleteMsg(self,num):
self.pop_conn.dele(num+1)
self.getMsgCount()
def disConnect(self):
self.pop_conn.quit()
xu=IMessagePtr()
xu.setFrom("xuyapeng@myhexin.com")
xu.AddRecipient("xuyapeng@myhexin.com")
xu.AddRecipientCC("xuyapeng@myhexin.com")
xu.AddAttachment("E:\\xyp\\python小程序\\THS_alpha_20130718.exe")
xu.setCharSet("GB2312")
xu.SetSubject("classTest")
xu.AddBody("this is a test")
xu.setUserName("xuyapeng@myhexin.com")
xu.setPassWord("xuyapeng1991")
xu.sendMail("mail.myhexin.com")
mailPop = IPOP3Ptr()
mailPop.Connect('xuyapeng@myhexin.com','xuyapeng1991','mail.myhexin.com')
#mailPop.Connect('gonghuabin@myhexin.com','ghb2823320','mail.myhexin.com')
mailPop.getMessages()
mailPop.getMsgCount()
#mailPop.deleteMsg(0)
mailPop.disConnect()