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

当ページには広告が含まれています。

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

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

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

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

対象者

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

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

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

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

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】スケジュール関数の使い方

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

【参考】Pythonで面倒な作業を自動化!手法一挙公開中!

当サイトでは日々面倒な作業をPythonで自動化する方法を多数配信しております。日々の作業が飛躍的効率化できること間違いなしですので、以下気になった記事があれば併せてご覧ください。

【面倒なタスクをPythonで解決!】作業効率化の人気記事一覧




【参考】Pythonとは?・実現できること

最後に

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

本記事をシェア!
目次