参考 :
        发送邮件简单入门 ( 以qq邮箱,163邮箱为例 ) :https://blog.csdn.net/qq_38661599/article/details/81013834
        smtp ssl 模式 发送邮件 与 附件:https://www.cnblogs.com/SunshineKimi/p/10629342.html
        Python3 使用 SMTP 发送带附件邮件:https://www.jb51.net/article/142231.htm

还可以使用 scrapy.mail 模块发送邮件:https://blog.csdn.net/you_are_my_dream/article/details/60868329

把代码中这个几设置成你自己的参数:

self._smtp_host = "smtp.mxhichina.com"    # 设置 服务器
self._smtp_port = 465                     # 设置 端口
self._email_address = "xxxxxxxx@xxx.com"  # 用户名
self._email_password = "xxxxxxxxxxxxxxx"  # 口令

完整代码( send_email_attach.py )

# -*- coding: utf-8 -*-
# @Author  :
# @File    : temp.py
# @Software: PyCharm
# @description : XXXimport smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
import optparseclass SendEmail(object):def __init__(self):super(SendEmail, self).__init__()# 第三方 SMTP 服务self._smtp_host = "smtp.mxhichina.com"  # 设置 服务器self._smtp_port = 465                   # 设置 端口# 默认的发送邮件的邮箱地址和密码。# 当没有传递发送者的邮箱地址和密码时,使用默认的邮箱地址和密码发送self._email_address = "xxxxxxxx@xxx.com"  # 用户名self._email_password = "xxxxxxxxxxxxxxx"     # 口令self.frm = Noneself.pwd = Noneself.to = Noneself.email_title = Noneself.email_content = Noneself.attach_path = Noneself.attach_path_list = Nonepassdef set_args(self, frm=None, pwd=None, to=None, email_title=None, email_content=None, attach_path=None):"""设置参数:param frm: 发送者邮箱地址:param pwd: 发送者邮箱密码:param to:  接收者邮箱地址,多个接收者时以逗号','分割:param email_title:  邮件标题:param email_content:邮件内容:param attach_path:  附件路径,多个附件时以逗号','分割:return:"""if frm:self.frm = frmif not pwd:raise Exception('设置邮箱密码')else:self.pwd = pwdelse:self.frm = self._email_addressself.pwd = self._email_passwordself.to = toself.email_title = email_titleself.email_content = email_contentself.attach_path = attach_path# 把逗号分割的附件路径变成 listif self.attach_path is not None:self.attach_path_list = self.attach_path if ',' not in self.attach_path else self.attach_path.split(',')def send_email(self):multi_part = MIMEMultipart()multi_part['From'] = self.frmmulti_part['To'] = self.tomulti_part['Subject'] = Header(self.email_title, "utf-8")# 添加 邮件 内容msg = self.email_contentemail_body = MIMEText(msg, 'plain', 'utf-8')multi_part.attach(email_body)# 添加附件if isinstance(self.attach_path_list, str):# 只有一个附件attach = MIMEText(open(self.attach_path, 'rb').read(), 'base64', 'utf-8')attach["Content-Type"] = 'application/octet-stream'# filename not strictattach_file_name = self.attach_path_list.split('/')[-1]attach["Content-Disposition"] = 'attachment; filename="{0}"'.format(attach_file_name)multi_part.attach(attach)elif isinstance(self.attach_path_list, list):# 多个附件for item in self.attach_path_list:attach = MIMEText(open(item, 'rb').read(), 'base64', 'utf-8')attach["Content-Type"] = 'application/octet-stream'# filename not strictattach_file_name = item.split('/')[-1]attach["Content-Disposition"] = 'attachment; filename="{0}"'.format(attach_file_name)multi_part.attach(attach)# ssl 协议安全发送smtp_server = smtplib.SMTP_SSL(host=self._smtp_host, port=self._smtp_port)try:smtp_server.login(self.frm, self.pwd)smtp_server.sendmail(self.frm, self.to, multi_part.as_string())except smtplib.SMTPException as e:print("send fail", e)else:print("send success")finally:try:smtp_server.quit()except smtplib.SMTPException:print("quit fail")else:print("quit success")if __name__ == '__main__':parse = optparse.OptionParser(usage='"usage : %prog [options] arg1,arg2"', version="%prog 1.2")parse.add_option('-t', '--to', dest='to', action='store', type=str, metavar='to',help='接收者的邮箱地址, 多个接收者时以逗号 "," 分隔')parse.add_option('-f', '--from', dest='frm', type=str, metavar='from',help='发送者的邮箱地址')parse.add_option('-p', '--pwd', dest='pwd', type=str, metavar='pwd',help='发送者的邮箱密码')parse.add_option('-T', '--title', dest='email_title', type=str, metavar='title',help='邮件标题')parse.add_option('-C', '--content', dest='email_content', type=str, metavar='content',help='邮件内容')parse.add_option('-A', '--attach', dest='attach_path', type=str, metavar='attach',help='邮件的附件路径, 多个附件时以逗号 "," 分隔')parse.add_option('-v', help='help')options, args = parse.parse_args()temp_send = SendEmail()temp_send.set_args(frm=options.frm, pwd=options.pwd, to=options.to,email_title=options.email_title,email_content=options.email_content,attach_path=options.attach_path)temp_send.send_email()

可以执行 :python3 send_email_attach.py -h 查看帮助

发送邮件:

邮箱截图

Python 使用 smtp ssl 模式 发送邮件与附件相关推荐

  1. 使用163邮箱的smtp ssl端口发送邮件

    有一天,我发现报警邮件没发出来,公司以为是监控除了故障,好死不死查了大半天,却是网易smtp的25端口给封了.咨询过后说是可以使用ssl端口,"那好吧,学谁不好非要学阿里云,封就封吧,封之前 ...

  2. MediaWiki 设置QQ邮箱SMTP(SSl方式)发送邮件

    为什么80%的码农都做不了架构师?>>>    MediaWiki 默认采用本机作为邮件发送服务器,而发出去的邮件很容易被接收方当成垃圾邮件或者直接被屏蔽掉,所以建议直接采用第三方s ...

  3. python应用系列教程——python使用smtp协议发送邮件:html文本邮件、图片邮件、文件附件邮件

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python使用smtp协议发送电子邮件.包含发送html文本邮件.包含图片附件的邮件,包含其他文件附件的邮件.可设置邮件的收发人,主题,内容 ...

  4. python 实现SMTP发送邮件(四)-添加附件

    Python实现SMTP发送邮件(四)-添加附件 [Python]  纯文本查看  复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 ...

  5. python发送邮件和附件

    发送邮件的时候,需要发送人,收件人,和一台邮件服务器,这里使用python发送一个邮件,主要需要引入smtplib和email库. 下面是源码,粘贴即可用: #!/usr/bin/env python ...

  6. 基于python SMTP实现自动发送邮件教程解析

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.sfkyty.com ...

  7. python smtplib.SMTP()发送邮件报“UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xba in position 0: i

    python smtplib.SMTP()发送邮件报"UnicodeDecodeError: 'utf-8' codec can't decode byte 0xba in position ...

  8. python3:利用SMTP协议发送QQ邮件+附件

    转载请表明出处:https://www.cnblogs.com/shapeL/p/9115887.html 1.发送QQ邮件,首先必须知道QQ邮箱的SMTP服务器 http://service.mai ...

  9. python封装sql脚本 github_Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码...

    原标题:Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码 在运维开发中,使用 Python 发送邮件是一个非常常见的应用场景.今天一起来探讨一下,GitHub 的大牛门是如何使 ...

最新文章

  1. 为什么训练集用fit_transform()而测试集用transform()及sklearn.feature_extraction.text.CountVectorizer API详解
  2. 外来Slackware包管理工具[转]
  3. Struts2的文件目录
  4. 今日arXiv精选 | 13 篇 ICCV 2021 最新论文
  5. 从0基础学Python:装饰器及练习(基础)
  6. python语言特点粘性扩展_【语言处理与Python】9.2处理特征结构\9.3扩展基于特征的文法...
  7. 2021中国低/无代码平台投融资趋势报告: 融资规模近15亿,估值近70亿,马太效应将愈演愈烈...
  8. 什么是胖客户端和瘦客户端?什么是哑终端?(转)
  9. NX/UG二次开发孔特征查找
  10. 数据库内外连接、自连接
  11. cad延伸快捷键_史上最全CAD快捷键大全,熟练掌握画图快得飞起来(强烈建议收藏)...
  12. 近岸蛋白通过注册:预计9个月营收2.3亿 同比降幅超15%
  13. BFC是什么?BFC可以做什么?
  14. 基于SSH网上体育用品销售系统
  15. 织梦php商城排序,DEDECMS织梦自定义文章排序
  16. 立秋后6大脏器排毒法 干净才是真正文艺范儿(转)
  17. Word中如何将英文翻译成中文?简单的方法介绍
  18. 获取联想锁屏壁纸(超简单两个方法)
  19. APP怎么在论坛推广?行业论坛渠道要把握!
  20. 局域网网络流量监控_18个监控网络带宽的Linux命令行工具

热门文章

  1. 论文浅尝 | 基于RNN与相似矩阵CNN的知识库问答
  2. TypeError: can't pickle _thread.RLock objects
  3. 数字化转型知识方法系列之:数字化转型的基本认识与参考架构
  4. 5 LInux系统目录结构
  5. 【大数据】分布式集群部署
  6. flannel无法跨主机ping通容器的解决方式
  7. php blog to explore
  8. 继承和多态二:虚析构函数
  9. 用MXNet实现mnist的生成对抗网络(GAN)
  10. Openstack的镜像上传原理