# -*- coding: UTF-8 -*-
import poplib
import smtplib
import sys
import email
class popBasic:
def __init__(self):
"""
popBasic初始化
"""
self.isLogin = False
#self.destDir = destDir
def login(self, popHost, popUser, popPassword, smtpHost, smtpUser, smtpPassword):
"""
登录pop3和smpt服务器
@param popHost: pop3服务器地址
@param popUser: pop3用户名
@param popPassword: pop3用户密码
@param smtpHost: smtp服务器地址
@param smtpUser: smtp用户名
@param smtpPassword: smtp用户密码
@return: True - 成功登录pop3与smtp; False - pop3与smtp登录失败
"""
self.pop = poplib.POP3(popHost)
try:
self.pop.user(popUser)
self.pop.pass_(popPassword)
self.isLogin = True
print "POP3 login OK"
self.smtp = smtplib.SMTP(smtpHost)
code = self.smtp.login(smtpUser, smtpPassword)
if not (200 <= code <= 299):
self.isLogin = True
print "SMTP Login OK."
else:
self.isLogin = False
print "SMTP Login Error."
return True
except poplib.error_proto, ex:
self.isLogin = False
print "POP3 login Error"
return False
def getPOPInfo(self):
"""
获取pop3服务器中登录用户的邮箱信息
@return: 邮件总数与总字节数 例:(105, 37349795)
number, size = getPOPInfo()
"""
if self.isLogin:
return self.pop.stat()
def pop2smtp(self, toAdd, fromAdd):
"""
收pop3邮件,然后转发
@param toAdd: 新的到达地址
@param fromAdd: 新的发送地址
@return: void
"""
if self.isLogin:
for item in self.pop.list()[1]:
number, octets = item.split(' ')
print "POP3 downloading... number: %s" % (number)
lines = self.pop.retr(number)[1]
msg = email.message_from_string("\n".join(lines))
print "download OK. begin SMTP send ..."
msg1 = email.Message.Message()
msg1['to'] = toAdd
msg1['from'] = fromAdd
msg1['date'] = msg['date']
msg1['subject'] = msg['subject']
body = ""
if msg.is_multipart():
for part in msg.get_payload():
body = body + part.as_string()
else:
body = msg.get_payload()
mail = msg1.as_string()[:-1] + body
self.smtp.sendmail(msg1['from'],msg1['to'], mail)
print "send ok."
# ---------------------------------------
#print "begin delete pop3 mail Number: %s" % (number)
#self.pop.dele(number)
#print "delete ok."
# ---------------------------------------
exit(1)
def loguot(self):
if self.isLogin:
self.pop.quit()
print "POP3 quit."
self.smtp.close()
print "SMTP close"
处理中文乱码问题
#-*- encoding: utf-8 -*-
#!/usr/bin/env python
# Author: luohuijun
import smtplib
from email.mime.text import MIMEText
from email.header import Header
def send_email(title = '软件监控通知邮件',meial_server = '',from_name = '', from_pwd = '' ,to_name_list=[],message=''):
msg = MIMEText(message,'html',_charset='UTF-8') #设置UTF-8编码
msg['Subject'] =Header(title,"UTF-8") #设置UTF-8编码
msg['From'] = meial_server
msg['To'] = ";".join(to_name_list)
try:
s = smtplib.SMTP()
s.connect(meial_server)
s.login(from_name,from_pwd)
s.sendmail(from_name, to_name_list, msg.as_string())
return True
except Exception, e:
print str(e)
return False
finally:
s.close()
if __name__=="__main__":
print send_email(title='软件监控通知邮件',meial_server='smtp.live.com',from_name='lhj588@live.cn',from_pwd='XXXX',to_name_list=['327677031@qq.com','lhj588@live.cn'],message='恭喜您,邮件发送成功!')
#!/usr/bin/env python
# Author: luohuijun
import smtplib
from email.mime.text import MIMEText
from email.header import Header
def send_email(title = '软件监控通知邮件',meial_server = '',from_name = '', from_pwd = '' ,to_name_list=[],message=''):
msg = MIMEText(message,'html',_charset='UTF-8') #设置UTF-8编码
msg['Subject'] =Header(title,"UTF-8") #设置UTF-8编码
msg['From'] = meial_server
msg['To'] = ";".join(to_name_list)
try:
s = smtplib.SMTP()
s.connect(meial_server)
s.login(from_name,from_pwd)
s.sendmail(from_name, to_name_list, msg.as_string())
return True
except Exception, e:
print str(e)
return False
finally:
s.close()
if __name__=="__main__":
print send_email(title='软件监控通知邮件',meial_server='smtp.live.com',from_name='lhj588@live.cn',from_pwd='XXXX',to_name_list=['327677031@qq.com','lhj588@live.cn'],message='恭喜您,邮件发送成功!')