共计 4091 个字符,预计需要花费 11 分钟才能阅读完成。
1、支持 ini 配置文件读写
2、支持中文编码邮件
邮件发送主体部分 SendMail.py:
#!/usr/bin/env python | |
# -*- coding: UTF-8 -*- | |
from email.mime.multipart import MIMEMultipart | |
from email.mime.base import MIMEBase | |
from email.mime.text import MIMEText | |
from email.utils import COMMASPACE,formatdate | |
from email import encoders | |
from email.header import Header | |
import os | |
import ConfigIni | |
class class_smtp(): | |
def __init__(self,server, fro, to, subject, text, files): | |
self.server = server | |
self.fro = fro | |
self.to = to | |
self.subject = subject | |
self.text = text | |
self.files = files | |
def send_mail(self): | |
assert type(self.server) == dict | |
assert type(self.to) == list | |
assert type(self.files) == list | |
msg = MIMEMultipart() | |
msg['From'] = self.fro | |
if isinstance(self.subject,unicode): | |
print 'unicode' | |
self.subject = unicode(self.subject) | |
msg['Subject'] = self.subject | |
else: | |
msg['Subject'] = self.subject | |
''' | |
self.subject = unicode(self.subject) | |
msg['Subject'] = self.subject | |
print msg['Subject'] | |
#os._exit(0) | |
#msg['Subject'] = subject | |
''' | |
msg['To'] = COMMASPACE.join(self.to) | |
msg['Date'] = formatdate(localtime=True) | |
msg["Accept-Language"]="zh-CN" | |
msg["Accept-Charset"]="ISO-8859-1,utf-8" | |
msg.attach(MIMEText(self.text)) | |
if len(self.files): | |
print "Come here. ",len(self.files) | |
for f in self.files: | |
part = MIMEBase('application', 'octet-stream') #'octet-stream': binary data | |
part.set_payload(open(f, 'rb').read()) | |
encoders.encode_base64(part) | |
part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f)) | |
msg.attach(part) | |
else: | |
print 'Attachment list is empty.' | |
import smtplib | |
smtp = smtplib.SMTP(self.server['SMTP'], self.server['Port']) | |
smtp.ehlo() | |
smtp.starttls() | |
smtp.ehlo() | |
smtp.login(self.server['User'], self.server['Passwd']) | |
smtp.sendmail(self.fro, self.to, msg.as_string()) | |
smtp.close() | |
if __name__=='__main__': | |
server = {} | |
server['SMTP'] = ConfigIni.read_config('D:\\Config.ini', 'Server', 'SMTP') | |
server['User'] = ConfigIni.read_config('D:\\Config.ini', 'Server', 'User') | |
server['Passwd'] = ConfigIni.read_config('D:\\Config.ini', 'Server', 'Passwd') | |
server['Port'] = ConfigIni.read_config('D:\\Config.ini', 'Server', 'Port') | |
fro = ("%s<"+ server['User'] + ">") % (Header(server['User'],'utf-8'),) | |
to = ['411239339@qq.com'] | |
subject = u' 邮件发送测试 ' | |
text = 'mail content' | |
files = ['d:\\1.html'] # 支持列表发送附件 | |
smtp = class_smtp(server, fro, to, subject, text, files) | |
smtp.send_mail() |
配置文件读写 ConfigIni.py:
__author__ = 'Chenqin' | |
import ConfigParser | |
import traceback | |
import sys | |
class ClassConfig: | |
def __init__(self, path): | |
self.path = path | |
self.cf = ConfigParser.ConfigParser() | |
self.cf.read(self.path) | |
def get(self, field, key): | |
result = "" | |
try: | |
result = self.cf.get(field, key) | |
except: | |
result = "" | |
return result | |
def set(self, filed, key, value): | |
try: | |
self.cf.set(field, key, value) | |
with open(self.path,'w') as wfd: | |
cf.write(wfd) | |
except: | |
traceback.print_exc() | |
return False | |
return True | |
def read_config(config_file_path, field, key): | |
cf = ConfigParser.ConfigParser() | |
try: | |
cf.read(config_file_path) | |
result = cf.get(field, key) | |
except: | |
traceback.print_exc() | |
sys.exit(1) | |
return result | |
def write_config(config_file_path, field, key, value): | |
cf = ConfigParser.ConfigParser() | |
try: | |
cf.read(config_file_path) | |
cf.set(field, key, value) | |
with open(config_file_path,'w') as wfd: | |
cf.write(wfd) | |
except: | |
traceback.print_exc() | |
sys.exit(1) | |
return True |
配置文件示例 Config.ini:
[Server] | |
SMTP = smtp.gmail.com | |
User = chenqiin49@gmail.com | |
Passwd = ********* | |
Port = 25 |
正文完
创作不易,扫码加点动力

发表至: Python
2015-04-08
(微笑)