博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium3+python3-发送添加附件的邮件
阅读量:7065 次
发布时间:2019-06-28

本文共 3973 字,大约阅读时间需要 13 分钟。

发送邮件时,需写对应的邮箱服务器及端口号

注:邮件发多了会被拒,发不出去!!!

#!/user/bin/python# -*- coding:utf-8 -*-import smtplibfrom email.mime.base import MIMEBasefrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.header import Headerfrom email import encoders# Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。def get_email_obj(email_subject, email_from, to_addr_list):    '''    构造邮件对象,并设置邮件主题、发件人、收件人,最后返回邮件对象    :param email_subject:邮件主题    :param email_from:发件人    :param to_addr_list:收件人列表    :return :邮件对象 email_obj    '''    # 构造 MIMEMultipart 对象做为根容器    email_obj = MIMEMultipart()    email_to = ','.join(to_addr_list)   # 将收件人地址用“,”连接    # 邮件主题、发件人、收件人    email_obj['Subject'] = Header(email_subject, 'utf-8')    email_obj['From'] = Header(email_from, 'utf-8')    email_obj['To'] = Header(email_to, 'utf-8')    return email_objdef attach_content(email_obj, email_content, content_type='plain', charset='utf-8'):    '''    创建邮件正文,并将其附加到跟容器:邮件正文可以是纯文本,也可以是HTML(为HTML时,需设置content_type值为 'html')    :param email_obj:邮件对象    :param email_content:邮件正文内容    :param content_type:邮件内容格式 'plain'、'html'..,默认为纯文本格式 'plain'    :param charset:编码格式,默认为 utf-8    :return:    '''    content = MIMEText(email_content, content_type, charset)    # 创建邮件正文对象    email_obj.attach(content)     # 将邮件正文附加到根容器def attach_part(email_obj, source_path, part_name):    '''    添加附件:附件可以为照片,也可以是文档    :param email_obj:邮件对象    :param source_path:附件源文件路径    :param part_name:附件名    :return:    '''    part = MIMEBase('application', 'octet-stream')                          # 'octet-stream': binary data   创建附件对象    part.set_payload(open(source_path, 'rb').read())                        # 将附件源文件加载到附件对象    encoders.encode_base64(part)    part.add_header('Content-Disposition', 'attachment', filename=('gbk', '', '%s' % part_name))     # 给附件添加头文件    email_obj.attach(part)                                                                # 将附件附加到根容器def send_email(email_obj, email_host, host_port, from_addr, pwd, to_addr_list):    '''    发送邮件    :param email_obj:邮件对象    :param email_host:SMTP服务器主机    :param host_port:SMTP服务端口号    :param from_addr:发件地址    :param pwd:发件地址的授权码,而非密码    :param to_addr_list:收件地址    :return:发送成功,返回 True;发送失败,返回 False    '''    try:        '''            # import smtplib            # smtp_obj = smtplib.SMTP([host[, port[, local_hostname]]] )                # host: SMTP服务器主机。                # port: SMTP服务端口号,一般情况下SMTP端口号为25。            # smtp_obj = smtplib.SMTP('smtp.qq.com', 25)        '''        smtp_obj = smtplib.SMTP_SSL(email_host, host_port)     # 连接 smtp 邮件服务器        smtp_obj.login(from_addr, pwd)        smtp_obj.sendmail(from_addr, to_addr_list, email_obj.as_string())  # 发送邮件:email_obj.as_string():发送的信息        smtp_obj.quit()                                 # 关闭连接        print("发送成功!")        return True    except smtplib.SMTPException:        print("发送失败!")        return Falseif __name__ == "__main__":    # (QQ邮箱)    email_host = "smtp.qq.com"            # smtp 邮件服务器    host_port = 465                       # smtp 邮件服务器端口:SSL 连接    from_addr = "发件地址"                # 发件地址    pwd = "授权码"                  # 发件地址的授权码,而非密码    # (163邮箱)    # email_host = "smtp.163.com"             # smtp 邮件服务器    # host_port = 465                         # smtp 邮件服务器端口:SSL 连接    # from_addr = "发件地址"                  # 发件地址    # pwd = "授权码"                    # 发件地址的授权码,而非密码    to_addr_list = ["邮箱1", "邮箱2"]       # 收件地址    email_content = "邮件主题"    email_content_html = """    

Python 邮件发送...

菜鸟教程链接

图片:

""" email_subject = "邮件主题" email_from = "发件人" source_path = r"D:\我的文档\My Pictures\avatar.jpg" part_name = 'avatar.png' email_obj = get_email_obj(email_subject, email_from, to_addr_list) attach_content(email_obj, email_content) attach_part(email_obj, source_path, part_name) send_email(email_obj, email_host, host_port, from_addr, pwd, to_addr_list)

 

转载于:https://www.cnblogs.com/liyanqi/p/7885014.html

你可能感兴趣的文章
(PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
查看>>
使用sqlite保存数据返回主键
查看>>
js循环生成多个easyui datagrid数据网格时,初始化表格
查看>>
Python编程笔记(第三篇)【补充】三元运算、文件处理、检测文件编码、递归、斐波那契数列、名称空间、作用域、生成器...
查看>>
获取用户信息
查看>>
洛谷P3952 时间复杂度
查看>>
Leetcode | Parentheses 相关
查看>>
Ajax分页问题
查看>>
如何禁止内部viewPager滑动
查看>>
简单的转义字符
查看>>
RabbitMQ入门-Topic模式
查看>>
poj 2777 Count Color(线段树区间更新)
查看>>
Java数据结构与算法(5) - ch05链表(LinkList)
查看>>
CLR Via CSharp读书笔记(21):自动内存管理(垃圾回收)
查看>>
刚刚接触python的感想
查看>>
modelsim使用常见问题及解决办法集锦 ②
查看>>
常用的第三方库
查看>>
java 操作elasticsearch之搭建测试项目环境
查看>>
iOS-图文表并茂,手把手教你GCD
查看>>
python之logging模块
查看>>