主要是想到如果在后台训练深度学习模型的时候,比如机子在实验室,但是人不在,要是能实时地接收训练的信息,那么在训练完成或者训练出现问题的时候也能够及时的了解情况。
因此就想学习一下怎么在Python下发送邮件,找了一些博客,发现SMTP是个不错的选择。
我使用的是163邮箱作为发送方,本地没有SMTP服务,因此使用的是163邮箱提供的服务,这需要我们在163邮箱设置中将SMTP服务设置为启动。
以下为邮件发送的代码:
# 本地没有安装smtp协议,但是也可以通过第三方进行转发
# 一般直接 pip install PyEmail 就可以完成包的安装
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 第三方SMTP服务,这里选择的是163邮箱
# 需要邮箱开启SMTP服务,三个参数为服务器地址,用户名(@前面的部分就是用户名),密码并非登录密码而是客户端授权码
mail_host = 'smtp.163.com'
mail_user = 'xxxxx'
mail_pass = 'xxxxx'
# 设置发送方和接收方(可复数),发送方要与登录账户一致
sender = 'xxxxx@163.com'
receivers = ['xxxxx@qq.com']
# 准备发送内容,内容存在多样化可能性
message = MIMEText('本轮训练成功', 'plain', 'utf-8')
message['Subject'] = 'Clone Dolly Training Report'
message['From'] = sender
message['To'] = receivers[0]
# 邮件发送
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25) # 端口号是25
smtpObj.login(mail_user, mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
smtpObj.quit()
print('success')
except smtplib.SMTPException as e:
print('error', e)
需要注意的是登录的用户名以及其密码,用户名是邮箱的@前面的部分,但是密码并不是邮箱的登录密码,而是邮箱的一个客户端授权码,如果忘记了邮箱的授权码,可以删除后再重新生成,记得要记录下来,因为它只会显示一次。