昨天我们利用C++创建服务,Python来备份文件。但是还是少了一个东西,就是备份文件成功和失败,我们却不知道。如果我们自己有个服务器的话,还能自己写个小程序上传到自己的服务器。但是这也个成本,很多人自己都没有服务器。我突然想到可以使用邮件通知啊,这样我们就避免了自己搭建服务器,还能省时省力,最主要的就是省钱。所以立马上了github,搜索了下,果不其然有现成的代码可以使用,我修改修改,分享出来给大家一起参考。
这里我采用了网易云邮箱向我的QQ邮箱发送消息。
def send_mail():
if len(success_copy) == 0 and len(failed_copy) == 0:
return
# 第三方 SMTP 服务
mail_host = "smtp.163.com" # 设置服务器
mail_user = "liushixiongcpp@163.com" # 用户名
mail_pass = "你自己的口令" # 口令
sender = mail_user
# 接收邮件,可设置为你的QQ邮箱或者其他邮箱
receivers = [sender, '635672377@qq.com']
success_info_msg = ""
if len(success_copy) != 0:
success_info_msg = "Successfully backing up files:\r\n"
for item in success_copy:
# print(count + ":" + item)
success_info_msg += item + "\r\n"
success_info_msg += "--------------------------------------\r\n"
if len(failed_copy) != 0:
success_info_msg = "Backup file failed:\r\n"
for item in failed_copy:
# print(count + ":" + item)
success_info_msg += item + "\r\n"
message = MIMEText(success_info_msg, 'plain', 'utf-8')
message['From'] = sender
message['To'] = "635672377@qq.com"
subject = '文件备份'
message['Subject'] = Header(subject, 'utf-8')
try:
smtpObj = smtplib.SMTP()
# 调试的时候可以打开,如果出错了一定要把调试信息打开便于调试,不至于无处下手
# smtpObj.set_debuglevel(1)
smtpObj.connect(mail_host) # 25 为 SMTP 端口号
smtpObj.login(mail_user, mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print("邮件发送成功")
# except smtplib.SMTPException:
except:
print("Error: 无法发送邮件")
在这里我在介绍下,网易云邮箱,是怎么开启口令的。
按照这个步骤来,就能获取到口令,在替换Python的脚本中就可以了。