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
<code># !/usr/bin/env python</code>
<code># -*- coding: UTF-8 -*-</code>
<code>import</code> <code>csv</code>
<code>from</code> <code>email.mime.multipart </code><code>import</code> <code>MIMEMultipart</code>
<code>from</code> <code>email.mime.text </code><code>import</code> <code>MIMEText</code>
<code>from</code> <code>email.mime.application </code><code>import</code> <code>MIMEApplication</code>
<code>from</code> <code>email.utils </code><code>import</code> <code>COMMASPACE, formatdate</code>
<code>from</code> <code>email.mime.base </code><code>import</code> <code>MIMEBase</code>
<code>from</code> <code>email </code><code>import</code> <code>encoders</code>
<code>import</code> <code>time</code>
<code>def</code> <code>send_mail(server, fro, to, subject, text, chao):</code>
<code> </code><code>assert</code> <code>type</code><code>(server) </code><code>=</code><code>=</code> <code>dict</code>
<code> </code><code>assert</code> <code>type</code><code>(to) </code><code>=</code><code>=</code> <code>list</code>
<code> </code><code>msg </code><code>=</code> <code>MIMEMultipart()</code>
<code> </code><code>msg[</code><code>'From'</code><code>] </code><code>=</code> <code>fro</code>
<code> </code><code>msg[</code><code>'Subject'</code><code>] </code><code>=</code> <code>subject</code>
<code> </code><code>msg[</code><code>'To'</code><code>] </code><code>=</code> <code>COMMASPACE.join(to) </code><code># COMMASPACE==', '</code>
<code> </code><code>msg[</code><code>'Cc'</code><code>] </code><code>=</code> <code>chao </code><code># COMMASPACE==', '</code>
<code> </code><code>msg[</code><code>'Date'</code><code>] </code><code>=</code> <code>formatdate(localtime</code><code>=</code><code>True</code><code>)</code>
<code> </code>
<code> </code><code>xlsxpart </code><code>=</code> <code>MIMEBase(</code><code>"application"</code><code>, </code><code>"msword"</code><code>)</code>
<code> </code><code>xlsxpart.set_payload(</code><code>open</code><code>(u</code><code>'通知.docx'</code><code>,</code><code>'rb'</code><code>).read(), </code><code>'utf-8'</code><code>)</code>
<code> </code><code>xlsxpart.add_header(</code><code>'Content-Disposition'</code><code>, u</code><code>'attachment'</code><code>, filename</code><code>=</code><code>"通知.docx"</code><code>)</code>
<code> </code><code>msg.attach(xlsxpart)</code>
<code> </code><code>import</code> <code>smtplib</code>
<code> </code><code>smtp </code><code>=</code> <code>smtplib.SMTP(server[</code><code>'name'</code><code>], server[</code><code>'port'</code><code>])</code>
<code> </code><code>smtp.ehlo()</code>
<code> </code><code>smtp.starttls()</code>
<code> </code><code>smtp.login(server[</code><code>'user'</code><code>], server[</code><code>'passwd'</code><code>])</code>
<code> </code><code>smtp.sendmail(fro, to</code><code>+</code><code>[chao], msg.as_string())</code>
<code> </code><code>smtp.close()</code>
<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>
<code> </code><code>server </code><code>=</code> <code>{</code><code>'name'</code><code>: </code><code>'xx.163.com'</code><code>, </code><code>'user'</code><code>: </code><code>'xxxxx'</code><code>, </code><code>'passwd'</code><code>: </code><code>'xxx'</code><code>, </code><code>'port'</code><code>: </code><code>25</code><code>}</code>
<code> </code><code>fro </code><code>=</code> <code>'xxxxxxxx'</code>
<code> </code><code>subject </code><code>=</code> <code>'xxxxx'</code>
<code> </code><code>with </code><code>open</code><code>(</code><code>'1.csv'</code><code>, </code><code>'U'</code><code>) as csvfile:</code>
<code> </code><code># reader = csv.DictReader(csvfile)</code>
<code> </code><code>reader </code><code>=</code> <code>csv.reader(csvfile)</code>
<code> </code><code>l </code><code>=</code> <code>[]</code>
<code> </code><code>for</code> <code>row </code><code>in</code> <code>reader:</code>
<code> </code><code>l.append(row)</code>
<code> </code><code>print</code><code>(</code><code>"开始"</code><code>)</code>
<code> </code><code>for</code> <code>i </code><code>in</code> <code>l:</code>
<code> </code><code>name </code><code>=</code> <code>i[</code><code>0</code><code>]</code>
<code> </code><code>mail </code><code>=</code> <code>i[</code><code>2</code><code>:</code><code>10</code><code>]</code>
<code> </code><code>chao </code><code>=</code> <code>i[</code><code>1</code><code>]</code>
<code> </code><code>b </code><code>=</code> <code>'''</code>
<code> </code><code>您好!</code>
<code> </code><code>值此“八一”建军节之际,祝愿贵公司蓬勃发展,建军节快乐!</code>
<code> </code>
<code> </code><code>'''</code>
<code> </code><code>a </code><code>=</code> <code>"尊敬的{0}:"</code><code>.</code><code>format</code><code>(name)</code>
<code> </code><code>text </code><code>=</code> <code>a </code><code>+</code> <code>b</code>
<code> </code><code>while</code> <code>'' </code><code>in</code> <code>mail:</code>
<code> </code><code>mail.remove('')</code>
<code> </code><code>to </code><code>=</code> <code>mail</code>
<code> </code><code>print</code><code>(</code><code>'to'</code><code>, to, </code><code>'ok'</code><code>, </code><code>'chao'</code><code>, chao, </code><code>'ok'</code><code>)</code>
<code> </code><code>time.sleep(</code><code>7</code><code>)</code>
<code> </code><code>send_mail(server, fro, to, subject, text, chao)</code>
1.csv 的格式
第一列是客户名称,第二列是抄送的人,第三列和后面的是要发送的人。
<code> </code><code>msg[</code><code>'To'</code><code>] </code><code>=</code> <code>COMMASPACE.join(to) </code><code># COMMASPACE==', '</code>
<code>msg[</code><code>'Cc'</code><code>] </code><code>=</code> <code>chao </code><code># COMMASPACE==', '</code>
<code>smtp.sendmail(fro, to</code><code>+</code><code>[chao], msg.as_string())</code>
需要特别注意的是上面,抄送的是 1个人。
Cc 是指要抄送,要注意抄送的是一个人还是多个。如果是多个,需要按照to的格式。
本脚本有BUG,就是收附件的时候,如果附件是中文名字,手机客户端收的时候会显示一个 未命名。电脑客户端没有问题。
暂未解决。
本文转自 295631788 51CTO博客,原文链接:http://blog.51cto.com/hequan/1953223,如需转载请自行联系原作者