前提・実現したいこと
プログラミング初心者です。
質問するのも初めてなので質問内容が悪ければ申し訳ございません。
環境
windows10 Pro ver.1909
Python3.7.7
・実現したいこと
パソコン起動時に
「フォルダを常時監視してxlsxファイルが作成されるとメールを送信する」
プログラムを実行する。
・現在の状況
Pythonのwatchdogを用いて、指定したフォルダを常時監視し、そのフォルダにxlsxファイルが作成されるとgmailを送信するプログラムを作成しています。
IDEやコマンドプロンプトでプログラムを実行すれば意図通りの結果となります。
しかし、パソコン起動時に自動的にプログラムが実行されるようにしたいのですがうまくいかずここに質問をしました。
よろしくお願いいたします。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
Python3.7.7
1import time 2import os 3import smtplib 4from email.mime.text import MIMEText 5from email.utils import formatdate 6from watchdog.events import FileSystemEventHandler 7from watchdog.observers.polling import PollingObserver 8 9FROM_ADDRESS = '****@gmail.com' 10MY_PASSWORD = '****' 11TO_ADDRESS = '****@****' 12BCC = '' 13SUBJECT = '****' 14BODY = '****' 15 16def create_message(from_addr, to_addr, bcc_addrs, subject, body): 17 msg = MIMEText(body) 18 msg['Subject'] = subject 19 msg['From'] = from_addr 20 msg['To'] = to_addr 21 msg['Bcc'] = bcc_addrs 22 msg['Date'] = formatdate() 23 return msg 24 25def send(from_addr, to_addrs, msg): 26 smtpobj = smtplib.SMTP_SSL('smtp.gmail.com', 465, timeout=10) 27 smtpobj.login(FROM_ADDRESS, MY_PASSWORD) 28 smtpobj.sendmail(from_addr, to_addrs, msg.as_string()) 29 smtpobj.close() 30 31BASEDIR = "C:\sample" 32 33def getext(filename): 34 return os.path.splitext(filename)[-1].lower() 35 36class ChangeHandler(FileSystemEventHandler): 37 38 def on_created(self, event): 39 if event.is_directory: 40 return 41 if getext(event.src_path) in ('.xlsx'): 42 if __name__ == '__main__': 43 to_addr = TO_ADDRESS 44 subject = SUBJECT 45 body = BODY 46 msg = create_message(FROM_ADDRESS, to_addr, BCC, subject, body) 47 send(FROM_ADDRESS, to_addr, msg) 48 49if __name__ in '__main__': 50 while 1: 51 event_handler = ChangeHandler() 52 observer = PollingObserver() 53 observer.schedule(event_handler,BASEDIR,recursive=True) 54 observer.start() 55 try: 56 while True: 57 time.sleep(1) 58 except KeyboardInterrupt: 59 observer.stop() 60 observer.join()
試したこと
1.スタートアップフォルダ(shell:startup)にプログラムを置いても実行されませんでした。
2.タスクスケジューラのタスクの開始トリガーを「スタートアップ時」に設定しましたが、タスクが完了されてしまい、常時ファイルを監視することができません。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー