自定义了一个email模块,符合大多数人的使用习惯

2019-02-27 11:53:45来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

 1 # coding: utf-8
 2 
 3 import smtplib
 4 from email.mime.multipart import MIMEMultipart
 5 from email.mime.text import MIMEText
 6 from email.header import Header
 7 import re
 8 
 9 
10 def e_mail(smtpserver ='smtp.163.com',
11            username='自己邮箱账号',
12            password='自己邮箱授权码',
13            receiver='目标邮箱地址',
14            subject='邮件主题',
15            text='邮件内容',
16            sendfiles=None,   # 附件
17            ):
18 
19     """
20             此函数用以发送邮件
21         参数说明:smtpserver为smtp服务器
22                  username为发送者邮箱用户名
23                  password为发送者邮箱密码/授权码
24                  receiver为接收者邮箱(可以有多个,用','分隔)
25                  subject为邮件主题
26                  text为邮件内容
27                  sendfiles为附件路径(可以有多个,用','分隔)
28         注:所有参数均为字符串类型
29 
30     """
31 
32     # 发件人
33     sender = username
34 
35     # 收件人(可以为多个收件人)
36     # receivers = ['aaakkkbbbaaa2@163.com', 'liwei@staff.cntv.cn']
37     receivers = []
38     for i in receiver.split(','):
39         receivers.append(i)
40 
41     # 邮件标题
42     subject = Header(subject, 'utf-8').encode()
43 
44     # 邮件内容
45     main_body = text
46 
47     # 构造邮件对象
48     msg = MIMEMultipart('mixed')
49 
50     # 将邮件标题、发件人、收件人加入邮件对象。
51     msg['Subject'] = subject
52     msg['From'] = '%s <%s>' % (username, username)
53     # msg['To'] = 'XXX@126.com'
54     # 收件人为多个收件人,通过join将列表转换为以;为间隔的字符串
55     msg['To'] = ";".join(receivers)
56     # msg['Date']='2012-3-16'
57 
58     # 将邮件内容加入邮件对象
59     if text:
60         # 编码文字内容
61         text_plain = MIMEText(main_body, 'plain', 'utf-8')
62         # 将文字内容加入邮件对象
63         msg.attach(text_plain)
64 
65     # 将附件加入邮件对象
66     if sendfiles:
67         # 遍历所有附件
68         for i in sendfiles.split(','):
69             # 加载附件
70             sendfile = open(r'%s' % i, 'rb')
71             sendfile = sendfile.read()
72             text_att = MIMEText(sendfile, 'base64', 'utf-8')
73             text_att["Content-Type"] = 'application/octet-stream'
74             # 为附件命名
75             try:
76                 file_name = re.match(r'.*[\\/](.*)$', i).group(1)
77             except AttributeError:
78                 file_name = i
79             text_att.add_header('Content-Disposition', 'attachment', filename=file_name)
80             # 将附件加入邮件对象
81             msg.attach(text_att)
82 
83     # 发送邮件
84     smtp = smtplib.SMTP()
85     smtp.connect(smtpserver)
86     # 用set_debuglevel(1)可以打印出和SMTP服务器交互的所有信息。
87     # smtp.set_debuglevel(1)
88     smtp.login(username, password)
89     smtp.sendmail(sender, receivers, msg.as_string())
90     smtp.quit()
91     return '邮件发送完毕'
92 
93 
94 if __name__ == '__main__':
95     e_mail(sendfiles=r'C:\Users\Administrator\Desktop\结果.png,C:\Users\Administrator\Desktop\Agent说明文档.txt')

 


原文链接:https://www.cnblogs.com/baihualin/p/10439827.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:自然语言处理(四)——一个完整的训练程序

下一篇:Anaconda安装和环境的搭建