【Python】日々面倒な作業報告メール送信を自動化|スケジュール×Mail関数による定期実行で業務効率化を実現

こんにちは、Kosei(@kay_diacc2)です!

こんな方におすすめ!
  • Pythonで面倒なメール送信業務を自動化したい!
  • 自動スケジューリングによる定期的な添付メール送信を実現したい!
目次

【概要】スケジュール×メール関数を用いた面倒な報告メール送信の自動化

本記事では、Pythonを用いて定期的なメール作業(作成・送信)の自動化する方法について解説します。

対象者

具体的に次のような悩みを抱えている方におすすめな内容です。

(毎日・毎週)定期的に作業報告書をメールで送る作業がある。メール作成・送信が手間なため、全て自動化したい。

定期的に報告資料(作業報告書・会計管理表など)をメールで送る必要あり、面倒に感じる。

【参考】業務効率化を検討する上でおすすめの教材

Pythonを用いて業務効率化を実践したい方向けにおすすめの教材を紹介します。こちらにPythonを用いてメール配信を行うの具体的な方法も言及されています。

【Python】Schedule×Mail関数を用いた添付メールの定期送信

Python環境でSchedule関数およびMail送信関数を作成し、前述した課題を解決する方法を言及します。

【事前準備】Pythonライブラリのインストール

Schedule関数を起動させるには以下のPythonライブラリが必要です。事前にインストールしておきましょう。

pip install schedule

添付メール送信関数を作成

様々な形式の報告書(Word, Excel, Powerpoint, txt)をメールに添付し、宛先に送信するための関数を作成します。以下のように記述しましょう。

""" インポート文(編集不要) """
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
import os
charset = "iso-2022-jp"


def gmail_send(To,Subject,MailBody,FileName):
    
    """ 
    *****************************************
    メール設定(要編集)
    *****************************************
    """
    #SMTPサーバー接続・ログイン情報
    my_mail      = "自信のメールアドレスを入力"
    app_password = "パスワードを入力"
    smtp         = smtplib.SMTP("smtp.gmail.com",587)
    
    """ 
    *****************************************
    メール本文(編集不要)
    *****************************************
    """ 
    From    = my_mail
    Atesaki = To
    Kenmei  = Subject
    Body    = MailBody
    
    #メール本文
    msg = MIMEMultipart()
    msg.attach(MIMEText(Body))
    msg["Subject"] = Header(Kenmei.encode(charset),charset)

    #ファイルディレクトリ
    filename = FileName
    filepath = os.path.basename(filename)

    #ファイル読込
    with open(filename, "rb") as f:
        AtchFile = MIMEApplication(f.read())

    #ファイル添付
    AtchFile.add_header("Content-Disposition", "attachment", filename = filepath)
    msg.attach(AtchFile)

    """ メールサーバー接続(編集不要)"""
    #サーバー・ポート接続
    smtp.ehlo()
    #TLS暗号化
    smtp.starttls()
    #SMTPサーバーログイン
    smtp.login(my_mail,app_password)
    #メール送信
    smtp.sendmail(From,Atesaki,msg.as_string())
    #SMTPサーバー遮断
    smtp.quit()
    
    print("メールを送信しました。")

【Python】メール送信関数の使い方

本記事ではメール送信関数の具体的な使い方は割愛しております。代わりにこちらで詳しい解説をしています。

メール送信関数の使い方を詳しく知りたい方は、まずこちらをご覧ください。

スケジュール関数を作成

前述で作成したメール関数を定期的に実行するスケジュール関数を作成します。

以下の例は、毎日17:00にメールを送信する仕様として記載しています。

# ライブラリをインポート
import schedule
from time import sleep
    
# スケジュール登録
schedule.every().days.at("17:00").do(gmail_send,
                              To         = "送り先@xxxx.com",
                              Subject    = "(メール件名)本日の作業報告書", 
                              MailBody   = "(メール本文)本日の報告書を送信します。添付資料をご覧ください。",
                              FileName   = "添付する報告書名.xlsx"
                             )

# イベント実行
while True:
    schedule.run_pending()
    sleep(1)

【Python】スケジュール関数の使い方

スケジュール関数の使用方法について詳しく知りたい方は、こちらの記事をご覧ください。

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
URLをコピーする
URLをコピーしました!
目次
閉じる