【Python】利用python自动发送邮件
【Python】利用python自动发送邮件
前言
在训练网络的过程中,需要大量的时间,虽然可以预估网络训练完成时间,但蹲点看结果着实有点不太聪明的亚子。
因此,参照师兄之前发的python利用smtp自动发邮件的代码,我作了些调整,并参照网上的开源代码,整理出了加强版(可以传文件),这样训练的log还有model,或者是远程电脑上的文件都可以通过邮件即时到达接收邮件的邮箱很方便吧~~
Top
正文
废话不多说,直接上代码。
一、普通文本邮件(作通知训练结束用 😃 )
-- coding: UTF-8 --
import smtplib
from email.mime.text import MIMEText
第三方 SMTP 服务
mail_host = "smtp.163.com" # SMTP服务器
mail_user = "yourname" # 用户名
mail_pass = "xxx" # 密码(这里的密码不是登录邮箱密码,而是授权码)
sender = 'yourname@163.com' # 发件人邮箱
receivers = 'othername@163.com'] # 接收人邮箱
content = 'Python Send Mail ! 训练结束!'
title = 'Python SMTP Mail 训练结束' # 邮件主题
message = MIMEText(content, 'plain', 'utf-8') # 内容, 格式, 编码
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = title
try:
smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 启用SSL发信, 端口一般是465 smtpObj.login(mail_user, mail_pass) # 登录验证 smtpObj.sendmail(sender, receivers, message.as_string()) # 发送 print("mail has been send to {0} successfully.".format(receivers))
except smtplib.SMTPException as e:
print(e)
二、加强版附件传输邮件
-- coding: UTF-8 --
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
Files' Paths:
file1 = 'mail.py'
file2 = 'maill.py'
收邮件的地址,可以多个。
Receivers = ['receiver1@163.com','receiver2@163.com']
邮件主题:
title = 'Python SMTP 邮件(文件传输)'
模拟服务器
SMTP服务器
SMTPServer="smtp.163.com"
发邮件的地址
Sender="yourname@163.com"
发送者邮件的授权密码,去163邮箱设置里获取。并非是密码。
passwd="xxx"
创建一个带附件的实例
message = MIMEMultipart()
message['From'] = Sender
message['To'] = ",".join(Receivers)
message['Subject'] = title
邮件正文内容
message.attach(MIMEText('附件中是要传输的文件。n ', 'plain', 'utf-8'))
message.attach(MIMEText('The files you need are as followed. n ', 'plain', 'utf-8'))
构造附件1
att1 = MIMEText(open(file1, 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
att1["Content-Disposition"] = 'attachment; filename={0}'.format(file1)
message.attach(att1)
构造附件2
att2 = MIMEText(open(file2, 'rb').read(), 'base64', 'utf-8')
att2["Content-Type"] = 'application/octet-stream'
att2["Content-Disposition"] = 'attachment; filename={0}'.format(file2)
message.attach(att2)
try:
mailServer = smtplib.SMTP(SMTPServer, 25) # 25为端口号(邮件),0-1024都被系统占用了 # 登录邮箱 mailServer.login(Sender, passwd) # 需要的是,邮箱的地址和授权密码 # 发送文件 mailServer.sendmail(Sender, Receivers, message.as_string()) print("邮件发送成功") print("Mail with {0} & {1} has been send to {2} successfully.".format(file1,file2,Receivers))
except smtplib.SMTPException as e:
print("Error: 无法发送邮件") print(e)
Top
后话
可以把代码加到网络train.py的最后,别忘了在train.py的开头加上:
-- coding: UTF-8 --
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
然后你就可以专心忙自己的事情,网络训练结束就自动发邮件啦~
果然——Codes change the world. 😃
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【云栖号直播】本周重磅推荐:北京云梦网络CEO姜孝鹏 为您讲解如何通过互联网提升营销效率
云栖号在线课堂,及时了解行业动态!阿里云推出疫情专题方案,为企业业务护航,让你足不出户了解行业动态。 在这里可以走近阿里云基础产品,了解更多应用方案,还能遇见大咖分享洞见及故事!也可以通过视频的形式让你高效、生动的了解场景化的上云最佳实践。 本周重磅推荐 标题:“后浪“时代如何通过互联网提升营销效率? 简介:互联网能力决定企业生死,”后浪“时代的营销特征,如何通过互联网提升营销效率。 观看直播 标题:云原生时代业务架构的变革:从单体迈向 Serverless 简介:企业研发和运维应用服务的根本意义在于实现商业价值。当企业走向数字化商业变革,面临快速变化的需求,难以预测的风险,激烈的竞争压力等挑战,因此更快,更可靠的将应用交付上线,体现商业价值,成为重要的竞争优势。Serverless 架构,将在研发运维效率等方面为企业带来怎样的价值?企业又该如何在研发和运维体系中落地 Serverless 架构? 观看直播 标题:阿里云新品发布会第95期:阿里云EDAS 3.0版重磅升级发布会 简介:分享EDAS3.0 的新功能、新特性、核心竞争力和相关最佳实践;分享安利在微服务化和容器化方面的实践,...
- 下一篇
【Java】几种典型的内存溢出案例,都在这儿了!
【Java】几种典型的内存溢出案例,都在这儿了! 写在前面作为程序员,多多少少都会遇到一些内存溢出的场景,如果你还没遇到,说明你工作的年限可能比较短,或者你根本就是个假程序员!哈哈,开个玩笑。今天,我们就以Java代码的方式来列举几个典型的内存溢出案例,希望大家在日常工作中,尽量避免写这些low水平的代码。 定义主类结构首先,我们创建一个名称为BlowUpJVM的类,之后所有的案例实验都是基于这个类进行。如下所示。 public class BlowUpJVM { } 栈深度溢出public static void testStackOverFlow(){ BlowUpJVM.testStackOverFlow(); } 栈不断递归,而且没有处理,所以虚拟机栈就不断深入不断深入,栈深度就这样溢出了。 永久代内存溢出public static void testPergemOutOfMemory1(){ //方法一失败 List list = new ArrayList(); while(true){ list.add(UUID.randomUUID().toString().inter...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长