python 自動把mysql備份文件發送郵箱

import os
import time
import sched

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

# 第一個參數肯定任務的時間,返回從某個特定的時間到如今經歷的秒數
# 第二個參數以某種人爲的方式衡量時間
schedule = sched.scheduler(time.time, time.sleep)


def backupsDB():
    cmdString = 'E:/BCSoft/mysql-8.0.15-winx64/bin/mysqldump -hlocalhost -uroot -p123456 kzxtms >  c:/mysqlbackup/kzxtms_backup.sql'
    os.system(cmdString)


def sendMail():
    _user = "xxxxxx0@xxx.com"  # 發送者的郵箱
    _pwd = "xxxxx"  # 發送者的密碼  網易郵箱必須採用受權碼 而不是密碼
    _to = "xxxxxx@xxxx.com"  # 接收者的郵箱

    # 如名字所示Multipart就是分多個部分
    msg = MIMEMultipart()
    msg["Subject"] = "石黃高速智能灌溉系統數據庫備份"
    msg["From"] = _user
    msg["To"] = _to

    # ---這是文字部分---
    part = MIMEText("石黃高速智能灌溉系統數據庫備份")
    msg.attach(part)

    # ---這是附件部分---
    # 類型附件
    part = MIMEApplication(
        open('c:/mysqlbackup/kzxtms_backup.sql', 'rb').read())
    part.add_header('Content-Disposition', 'attachment',
                    filename="kzxtms_backup.sql")
    msg.attach(part)
    s = smtplib.SMTP("smtp.163.com", timeout=30)  # 鏈接smtp郵件服務器,端口默認是25
    s.login(_user, _pwd)  # 登錄服務器
    s.sendmail(_user, _to, msg.as_string())  # 發送郵件
    s.close()


def perform_command(cmd, inc):
    # 安排inc秒後再次運行本身,即週期運行
    schedule.enter(inc, 0, perform_command, (cmd, inc))
    os.system(cmd)
    backupsDB()
    sendMail()


def timming_exe(cmd, inc=60):
    # enter用來安排某事件的發生時間,從如今起第n秒開始啓動
    schedule.enter(inc, 0, perform_command, (cmd, inc))
    # 持續運行,直到計劃時間隊列變成空爲止
    schedule.run()


if __name__ == '__main__':
    print("show time after 10 seconds:")
    timming_exe("echo %time%",86400) # 每間隔86400秒備份發送郵件 86400秒=1天
相關文章
相關標籤/搜索