特定のフォルダにファイルが配置されたら
指定した操作が実行されると便利です
プログラムから出力されたファイルを判定して
メールを送信したり印刷したりする仕組みをPythonにて
作成しました
ライブラリのインストール
watchdog インストール
次のコマンドを実行
※Anaconda prompt
1 |
pip install watchdog |
サンプルソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
####################################################### #フォルダ監視 メール送信 印刷 ####################################################### from watchdog.events import FileSystemEventHandler from watchdog.observers import Observer import time,win32api import os import smtplib #監視対象フォルダパス FOLDER_PATH = "【監視対象フォルダパスを設定】" class ChangeHandler(FileSystemEventHandler): # 変更されたときのイベント def on_modified(self, event): #ファイル名を取得 fileName = os.path.basename(event.src_path) print(fileName) ext = os.path.splitext(fileName) print(ext) # 画像ファイルの場合、プリンターで印刷 if ext[1] in ('.jpg','.png'): print("印刷") # WindowsAPIを利用 win32api.ShellExecute(0, "print", event.src_path, None, ".", 0) # 「mail」ファイルが監視フォルダに設定されたときにメールを送信する elif fileName in ('mail'): print('メール送信') #SMTP SMTP = "【SMTPを設定】" #送信元メールアドレス FROM_MAIL_ADDRESS = "【送信元メールアドレスを設定】" #送信先メールアドレス TO_MAIL_ADDRESS = "【送信先メールアドレス】" #パスワード PASSWORD = "【パスワード】" #SMTPメール設定 smtpobj = smtplib.SMTP(SMTP, 587) smtpobj.ehlo() smtpobj.starttls() smtpobj.ehlo() smtpobj.login(FROM_MAIL_ADDRESS, PASSWORD) #MIMETextを利用して、メール本文を作成 from email.mime.text import MIMEText from email.utils import formatdate #件名 subject = "メール送信テスト" #送信元メールアドレス from_mail_address = FROM_MAIL_ADDRESS #宛先メールアドレス to_mail_address = TO_MAIL_ADDRESS #メッセージ本文 「'''」で囲むと改行含め文字列として送信可能 message = '''メール本文 改行テスト1 改行テスト2 ''' #メール送信情報オブジェクトを作成 msg = MIMEText(message) #メール作成 msg['Subject'] = subject msg['From'] = from_mail_address msg['To'] = to_mail_address msg['Date'] = formatdate() #メール送信 smtpobj.sendmail(from_mail_address, to_mail_address, msg.as_string()) smtpobj.close() """ # イベント動作確認用 # すべてのイベント def on_any_event(self, event): print('--全て--',event) # 作成した時のイベント def on_created(self, event): print('--作成--',event) # 変更したときのイベント def on_modified(self, event): print('--変更--', event) # 削除した時のイベント def on_deleted(self, event): print('--削除]--',event) # 移動した時のイベント def on_moved(self, event): print('--移動--,event) """ #フォルダ監視 observer = Observer() #監視するフォルダを指定 observer.schedule(ChangeHandler(), FOLDER_PATH, recursive=True) #監視スタート observer.start() while True: time.sleep(5) |
こちらでメール送信について
詳しく説明しています
実行結果
まとめ
本サイトはわかりやすさを重視
画像多めサンプルソースの公開を意識して作成しています
皆様の問題解決にお力添えできれば幸いです
コメント