1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/usr/bin/python2.7
# encoding:utf-8
import sys
import base64
import mimetypes
import optparse
import os.path
import smtplib
from email import encoders
from email.header import Header
from email.MIMEBase import MIMEBase
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
class SendMail:
def create_text_mail(self, from_addr='monitor.dataPlatform@mobvista.com', to_addr=[], cc_addr=[], subject='', body=''):
# 如果发送的是文本邮件,则第二个参数设置为plain
# 如果发送的是html邮件,则第二个参数设置为html
self.mail = MIMEText(body, 'plain', 'utf-8')
self.mail['Subject'] = "=?UTF-8?B?"+base64.b64encode(subject)+"?="
self.mail['From'] = from_addr
self.mail['To'] = '; '.join(to_addr)
self.mail['Cc'] = '; '.join(cc_addr)
self.from_addr = from_addr
self.to_addr = to_addr + cc_addr
def create_mail(self, from_addr='monitor.dataPlatform@mobvista.com', to_addr=[], cc_addr=[], subject='', body=''):
self.mail = MIMEMultipart()
self.mail['From'] = from_addr
self.mail['To'] = '; '.join(to_addr)
self.mail['Cc'] = '; '.join(cc_addr)
self.mail['Subject'] = "=?UTF-8?B?"+base64.b64encode(subject)+"?="
self.mail.attach(MIMEText(body, 'html', 'UTF-8'))
self.from_addr = from_addr
self.to_addr = to_addr + cc_addr
def add_attachment(self, files):
for attachment in files:
ctype, encoding = mimetypes.guess_type(attachment)
maintype, subtype = ctype.split('/',1)
fp = open(attachment, 'rb')
msg = MIMEBase(maintype, subtype)
msg.set_payload(fp.read())
fp.close()
encoders.encode_base64(msg)
filename = os.path.basename(attachment)
msg.add_header('Content-Disposition', 'attachment', filename=str(Header(filename, 'UTF-8')))
self.mail.attach(msg)
def send_mail(self, host='smtp.exmail.qq.com', username='monitor.dataPlatform@mobvista.com', password='dataPlatform1'):
s = smtplib.SMTP(host, 587)
s.starttls()
s.login(username, password)
s.sendmail(self.from_addr, self.to_addr, self.mail.as_string())
s.quit()
if __name__ == '__main__':
p = optparse.OptionParser()
p.add_option('--from', '-f', dest='from_addr', default='monitor.dataPlatform@mobvista.com')
p.add_option('--to', '-t')
p.add_option('--cc', '-c')
p.add_option('--host', '-o', default='smtp.exmail.qq.com')
p.add_option('--username', '-u', default='monitor.dataPlatform@mobvista.com')
p.add_option('--password', '-p', default='dataPlatform1')
p.add_option('--subject', '-s', default='')
p.add_option('--body', '-b', default='')
p.add_option('--attachment', '-a')
options, arguments = p.parse_args()
to_user = []
cc_user = []
if options.to:
to_user = options.to.split(',')
if options.cc:
cc_user = options.cc.split(',')
sendmail = SendMail()
sendmail.create_mail(options.from_addr, to_user, cc_user, options.subject, options.body)
#sendmail.create_text_mail(options.from_addr, to_user, cc_user, options.subject, options.body)
if options.attachment:
attachments = options.attachment.split(',')
sendmail.add_attachment(attachments)
sendmail.send_mail(options.host, options.username, options.password)