こんにちは、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】メール送信関数の使い方
本記事ではメール送信関数の具体的な使い方は割愛しております。代わりにこちらで詳しい解説をしています。
メール送信関数の使い方を詳しく知りたい方は、まずこちらをご覧ください。
【RPA】Python×メール(Gmail)送信自動化|SMTP認証・添付ファイル・プログラム構築までの流れを徹底解説
RPA手法の1つとしてメール作業の自動化を紹介。本記事ではGmailを用いたメール自動送信ツールのPython開発手順を紹介。Gmailのみならず、YahooやOutlookを用いたメールの送信自動化ツール作成にも役立てることができる内容となっております。
スケジュール関数を作成
前述で作成したメール関数を定期的に実行するスケジュール関数を作成します。
以下の例は、毎日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】Scheduleモジュールを用いたイベント定期実行|指定時間動作のスケジュール関数作成例と使い方解説
Pythonスクリプトを一度きりではなく、定期的に実行できるようにしたい。加えて、定期的な実行条件は細かく定義したい。本記事ではこのような要望に回答。具体的に「スケジュール(Schedule)モジュールを活用した定期実行処理の組み立て方法」について詳しく解説。
【参考】Pythonで面倒な作業を自動化!手法一挙公開中!
当サイトでは日々面倒な作業をPythonで自動化する方法を多数配信しております。日々の作業が飛躍的効率化できること間違いなしですので、以下気になった記事があれば併せてご覧ください。
【面倒なタスクをPythonで解決!】作業効率化の人気記事一覧
【参考】Pythonとは?・実現できること
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら