Python批量发邮件--加附件/抄送

简介:
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
# !/usr/bin/env python
# -*- coding: UTF-8 -*-
import  csv
from  email.mime.multipart  import  MIMEMultipart
from  email.mime.text  import  MIMEText
from  email.mime.application  import  MIMEApplication
from  email.utils  import  COMMASPACE, formatdate
from  email.mime.base  import  MIMEBase
from  email  import  encoders
import  time
 
 
def  send_mail(server, fro, to, subject, text, chao):
     assert  type (server)  = =  dict
     assert  type (to)  = =  list
     msg  =  MIMEMultipart()
     msg[ 'From' =  fro
     msg[ 'Subject' =  subject
     msg[ 'To' =  COMMASPACE.join(to)   # COMMASPACE==', '
     msg[ 'Cc' =  chao   # COMMASPACE==', '
     msg[ 'Date' =  formatdate(localtime = True )
     
     
     
     xlsxpart  =  MIMEBase( "application" "msword" )
     xlsxpart.set_payload( open (u '通知.docx' , 'rb' ).read(),  'utf-8' )
     xlsxpart.add_header( 'Content-Disposition' , u 'attachment' , filename = "通知.docx" )
     msg.attach(xlsxpart)
     
     
     
     import  smtplib
     smtp  =  smtplib.SMTP(server[ 'name' ], server[ 'port' ])
     smtp.ehlo()
     smtp.starttls()
     smtp.ehlo()
     smtp.login(server[ 'user' ], server[ 'passwd' ])
     smtp.sendmail(fro, to + [chao], msg.as_string())
     smtp.close()
     
     
if  __name__  = =  '__main__' :
     server  =  { 'name' 'xx.163.com' 'user' 'xxxxx' 'passwd' 'xxx' 'port' 25 }
     fro  =  'xxxxxxxx'
     subject  =  'xxxxx'
     with  open ( '1.csv' 'U' ) as csvfile:
         # reader = csv.DictReader(csvfile)
         reader  =  csv.reader(csvfile)
         =  []
         for  row  in  reader:
             l.append(row)
     print ( "开始" )
     for  in  l:
         name  =  i[ 0 ]
         mail  =  i[ 2 : 10 ]
         chao  =  i[ 1 ]
         =  '''
         您好!
         值此“八一”建军节之际,祝愿贵公司蓬勃发展,建军节快乐!
                                                                                      
             '''
         =  "尊敬的{0}:" . format (name)
         text  =  +  b
         while  ''  in  mail:
             mail.remove('')
         to  =  mail
         print ( 'to' , to,  'ok' 'chao' , chao,  'ok' )
         time.sleep( 7 )
         send_mail(server, fro, to, subject, text, chao)



1.csv 的格式

第一列是客户名称,第二列是抄送的人,第三列和后面的是要发送的人。


1
2
  msg[ 'To' =  COMMASPACE.join(to)   # COMMASPACE==', '
msg[ 'Cc' =  chao   # COMMASPACE==', '
1
smtp.sendmail(fro, to + [chao], msg.as_string())

需要特别注意的是上面,抄送的是 1个人。


Cc 是指要抄送,要注意抄送的是一个人还是多个。如果是多个,需要按照to的格式。



本脚本有BUG,就是收附件的时候,如果附件是中文名字,手机客户端收的时候会显示一个 未命名。电脑客户端没有问题。


暂未解决。










本文转自 295631788 51CTO博客,原文链接:http://blog.51cto.com/hequan/1953223,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
存储 安全 网络安全
手把手教你使用Python轻松搞定发邮件
手把手教你使用Python轻松搞定发邮件
381 0
|
7月前
|
Python
|
3月前
|
自然语言处理 Python
python发邮件|4-20
python发邮件|4-20
|
7月前
|
Linux API Python
【python】如何通过python来发邮件,各种发邮件方式详细解析
【python】如何通过python来发邮件,各种发邮件方式详细解析
|
数据安全/隐私保护
Python--yagmail,我用这个模块每天定时给同事发邮件
Python--yagmail,我用这个模块每天定时给同事发邮件
157 0
|
7月前
|
人工智能 搜索推荐 算法
使用Python自动发邮件提醒你周末吃啥
在快节奏的现代生活中,周末往往是人们放松身心、享受美食的宝贵时光。然而,面对琳琅满目的餐饮选择,很多人常常陷入“吃什么”的纠结中。为了解决这一问题,我们可以利用Python编写一个自动化脚本,每周自动发送邮件提醒我们周末的餐饮选择
57 0
|
7月前
|
存储 安全 计算机视觉
用 Python 脚本实现电脑唤醒后自动拍照 截屏并发邮件通知
用 Python 脚本实现电脑唤醒后自动拍照 截屏并发邮件通知
|
7月前
|
移动开发 Python HTML5
Python办公自动化【发送普通邮件、发送HTML邮件、发送附件邮件-smtplib、批量发送邮件-smtplib、发送邮件-zmail】(八)-全面详解(学习总结---从入门到深化)
Python办公自动化【发送普通邮件、发送HTML邮件、发送附件邮件-smtplib、批量发送邮件-smtplib、发送邮件-zmail】(八)-全面详解(学习总结---从入门到深化)
200 0
|
7月前
|
Python
Python自动化办公之Excel拆分并自动发邮件
Python自动化办公之Excel拆分并自动发邮件
|
存储 数据采集 安全
【python基础知识】18.实操-使用python自动群发邮件
【python基础知识】18.实操-使用python自动群发邮件
306 0
【python基础知识】18.实操-使用python自动群发邮件