zoukankan      html  css  js  c++  java
  • 自定义了一个email模块,符合大多数人的使用习惯

     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:UsersAdministratorDesktop结果.png,C:UsersAdministratorDesktopAgent说明文档.txt')
  • 相关阅读:
    spring bean-- autowired的正确用法
    @Autowired的使用:推荐对构造函数进行注释
    spring中bean的构造函数,Autowired(Value)注入与@PostConstruct调用顺序
    IconVault – 创建自定义图标字体的神器推荐
    Pure – 赞!轻量的、响应式的 CSS 模块集
    HTML Inspector – 帮助你编写高质量的 HTML 代码
    Tourist.js – 简单灵活的操作指南和导航插件
    分享!20套惊艳的扁平化设计素材免费下载
    Web 开发人员必备的随机 JSON 数据生成工具
    Sylius – 100% 免费和开源的电子商务解决方案
  • 原文地址:https://www.cnblogs.com/baihualin/p/10439827.html
Copyright © 2011-2022 走看看