# -*- 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='恭喜您,邮件发送成功!')