Python 使用 smtp ssl 模式 发送邮件与附件

 

参考 :
        发送邮件简单入门 ( 以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 查看帮助

发送邮件:

邮箱截图

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity.Interception System (2.0)

转载于:https://www.cnblogs.com/artech/archive/2010/08/27/1810010.html

卷积神经网络为什么能称霸计算机视觉领域?

来源:图灵人工智能摘要:在机器视觉和其他很多问题上,卷积神经网络取得了当前最好的效果,它的成功促使我们思考一个问题,卷积神经网络为什么会这么有效?在本文中,将为大家分析卷积神经网络背后的…

Python3.2+ 的 concurrent.futures 模块

concurrent.futures 官方文档:https://docs.python.org/3/library/concurrent.futures.html concurrent.futures: 线程池, 并发的处理任务:https://www.h3399.cn/201906/703751.html IO 密集型 vs 计算密集型: IO密集型:读取文件…

C# 判断一字符串是否为合法数字(正则表达式)

代码 ///<summary>///判断一个字符串是否为合法整数(不限制长度) ///</summary>///<param name"s">字符串</param>///<returns></returns>publicstaticboolIsInteger(strings) { stringpattern "…

关于现在人工智能预测的一些冷水

来源&#xff1a;人工智能和大数据 作者&#xff1a;田渊栋最近有关人工智能和深度学习的各种预测满天飞&#xff0c;作为圈内人&#xff0c;我来泼点冷水。我们常说科技树科技树&#xff0c;这个比喻是非常贴切的&#xff0c;现代科技的基础理论并不复杂&#xff0c;做个摘要…

Windows10 下搭建汇编语言开发环境( 利用 DOSBOX 和 MASM32 )

Windows10下搭建汇编语言开发环境&#xff08;利用DOSBOX和MASM32&#xff09;&#xff1a;https://www.cnblogs.com/zyever/p/7919007.html 如何在win10 64位下搭载汇编环境&#xff08;包含汇编dosbox和masm文件&#xff09;&#xff1a;https://blog.csdn.net/xyisv/articl…

一文解读“边缘计算” 和物联网的亲密关系!

来源&#xff1a;IT技术之家摘要&#xff1a;物联网的最终目标是万物互联&#xff0c;而边缘计算是解决当前云计算所面对的数据传输问题所应用的主要方式&#xff0c;相对于云计算&#xff0c;有更大的优势。物联网的最终目标是万物互联&#xff0c;而当前对于宽带水平来说&…

寄存器 和 存储器

From&#xff1a;https://blog.csdn.net/menshu1892/article/details/79912090 一、计算机硬件 先说内核&#xff1a;内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件&#xff0c;这种访问是有限的&#xff0c;并且内核决定一个程序在什…

博文视点大讲堂36期——让Oracle跑得更快 成功举办

博文视点大讲堂36期——让Oracle跑得更快 成功举办 电子工业出版社博文视点公司于2010年9月日在西单图书大厦成功举办“博文视点大讲堂36期——让Oracle跑得更快”讲座。8月22日&#xff0c;博文视点大讲堂为配合《让Oracle跑得更快—Oracle 10g性能分析与优化思路》的全国热销…

NLP 解决方案是如何被深度学习改写的?

作者&#xff1a;杨晓凡摘要&#xff1a;英特尔人工智能产品事业部&#xff0c;数据科学主任 Yinyin Liu 近日撰写了一篇文章&#xff0c;介绍了深度学习为自然语言处理带来的种种变化。有趣的大趋势是首先产生在 CV 领域的技术也不断用于 NLP&#xff0c;而深度学习解决方案的…

CompletableFuture详解~思维导图

#原图 System.out.println("https://www.processon.com/view/621a1b361e08533fc3afaa44?fromnew1");

如何在SharePoint 2010项目中引用UserProfiles.dll

如果需要进行SharePoint的UserProfile开发的话&#xff0c;我们需要引用以下程序集&#xff1a; C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.Office.Server.UserProfiles.dll在添加引用的时候&#xff0c;Visual Studio 2010会…

汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)

From&#xff1a;https://www.cnblogs.com/zimmerk/articles/2520011.html From&#xff1a;https://blog.csdn.net/bjbz_cxy/article/details/79467688 汇编寄存器功能详解&#xff1a;https://wenku.baidu.com/view/14ef15857cd184254a353586.html 寄存器、汇编命令详解&am…

斯坦福大学科学家研发微型植入式神经刺激器

来源&#xff1a;IEEE电气电子工程师协会实现使用可读生命体征传感器和可控制的植入器来装备我们的身体&#xff0c;就仿佛科幻小说中描述的一般&#xff0c;而事实上&#xff0c;这远比你想象中的要更接近现实。斯坦福大学最近研发出一款微型植入式神经刺激器&#xff0c;只有…

PPT演示力~思维导图

#原图 System.out.println("https://www.processon.com/view/6222dcb1e0b34d07287d09c6?fromnew1");

靠云计算翻身的微软正在“挑衅”亚马逊AWS

来源&#xff1a;第一财经摘要&#xff1a;凭借云计算业务“回春”的老牌科技企业微软还在继续享受转型的福利。微软最新发布的财报显示&#xff0c;云计算业务依然是公司目前业务最大的功臣。北京时间4月27日&#xff0c;微软发布的2018财年第三季度财报显示&#xff0c;在截止…

证书有效性验证、根证书

来源&#xff1a;证书有效性验证、根证书 - 程序员大本营 一、 数字证书的有效性验证主要从三个方面&#xff1a; &#xff08;1&#xff09;数字证书有效期验证 &#xff08;2&#xff09;根证书验证 &#xff08;3&#xff09;CRL验证 1、数字证书有效期验证…

BAT全球扩张AI路线图:百度早于谷歌,腾讯投资最多

来源&#xff1a;网络大数据CB Insights的最新报告挖掘BAT的AI相关专利记录、投资和收益等&#xff0c;全方位描绘了BAT的AI策略。报告显示&#xff0c;百度在AI领域处于领先地位。BAT分别着重自动驾驶、智慧城市和医疗AI&#xff0c;在政府的大力支持下&#xff0c;BAT正在向全…

汇编语言(王爽第三版) 实验5编写、调试具体多个段的程序

参考&#xff1a;http://blog.sina.com.cn/s/blog_171daf8e00102xclx.html 汇编语言实验答案 (王爽)&#xff1a;https://wenku.baidu.com/view/a1cd7c6c1fb91a37f111f18583d049649b660ede.html 一。将下面的程序编译连接&#xff0c;用Debug加载、跟踪&#xff0c;然后回答问…

RestTemplate 最详解

目录 RestTemplate 简单使用 创建 RestTemplate接口调用一些其他设置简单总结公众号推荐在项目中&#xff0c;当我们需要远程调用一个 HTTP 接口时&#xff0c;我们经常会用到 RestTemplate 这个类。这个类是 Spring 框架提供的一个工具类。Spring 官网对它的介绍如下&#xf…