質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Email

Email(電子メール)とは、ネットワークを介してメッセージを送受信するシステム。インターネット上で利用するメールを、Emailと呼ぶ場合が多いです。 インターネットの普及に伴い、現在では一般的なサービスとなっています。文字の他にも、画像、音声、プログラムなどを送受信することが可能です。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1787閲覧

【python3】outlook mailを自動送信したいが、2回目以降が送信されない

hiroyoshida

総合スコア5

Email

Email(電子メール)とは、ネットワークを介してメッセージを送受信するシステム。インターネット上で利用するメールを、Emailと呼ぶ場合が多いです。 インターネットの普及に伴い、現在では一般的なサービスとなっています。文字の他にも、画像、音声、プログラムなどを送受信することが可能です。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/08/17 15:58

前提

win32comとscheduleの組み合わせてoutlook mail を定期送信する練習をしています。
時間指定の1回目はうまくいきますが、2回目以降が送信されません。

実現したいこと

2回目以降も送信されるようにしたいので、誤りや正しいコードを教えて頂きたいです。
よろしくお願い致します。

発生している問題・エラーメッセージ

2回目以降のメールが送られないだけで、特に、エラーメッセージは出ていません。
なお、cmdでは、下記のように繰り返し実行されている表示がでます。

Microsoft Windows [Version 10.0.XXXXX] (c) Microsoft Corporation. All rights reserved. C:\Users\hiron>python メール文面サンプル.py C:\Users\hiron>python 時間指定ファイル_メール送信.py 実行します 実行します 実行します 実行します 実行します 実行します

該当のソースコード

python3

1###【送るメールの文面:メール文面サンプル.py】### 2import win32com.client 3#メールの送信 4outlook = win32com.client.Dispatch("Outlook.Application") 5mail = outlook.CreateItem(0) 6mail.to = 'XXXXXXX@XXXXXXXXX.com' 7mail.cc = '' 8mail.bcc = '' 9mail.subject = 'これは定期実のテストです ' 10mail.bodyFormat = 2 11 12mail.HTMLBody = f'''<p>関係各位</p> 13 14<p>テストテストテスト</p> <p>よろしくお願いいたします。</p> '''+ '\n' 15 16mail.Send()``` 17 18###【schedule の設定内容:時間指定ファイル_メール送信.py】#### 19import schedule 20import time 21 22def work(): 23 import メール文面サンプル 24 print("実行します") 25 26schedule.every(1).minutes.do(work) 27while True: 28 schedule.run_pending() 29 time.sleep(1)

試したこと

今は、1分ごとに設定していますが、2分や5分や10分でも同じく、2回目だけがメール送信されませんでした。
(cmdでは、繰り返し実行できている表示が出ます)
また、windows のタスクスケジューラーで、メール文面サンプル.py を登録してみたところ、2回目以降もメール送信確認できました。なぜschedule でできないのか知りたいです。

環境

OS : windows10
Outlook : Microsoft Office Home and Business 2019

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2022/08/17 16:39

importで実行させているため1度しか実行されないのではないでしょうか?(既にimportされているので2回目以降のimportは実行されない)
guest

回答1

0

ベストアンサー

importで実行させているため1度しか実行されません。(既にimportされているので2回目以降のimportは実行されない)
実行したい処理を関数にすれば良いでしょう。

b.py

1print("b")

c.py

1def test(): 2 print("c")

Python

1import schedule 2import time 3import c 4 5def work(): 6 import b 7 c.test() 8 9schedule.every(10).seconds.do(work) 10while True: 11 schedule.run_pending() 12 time.sleep(1) 13# b 14# c 15# c 16# c 17# ・・・

投稿2022/08/17 16:50

meg_

総合スコア10718

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiroyoshida

2022/08/18 13:55

meg_様 早速のご教示ありがとうございました。 先ほど、試してみたところ、おかげさまで、無事に2回目以降も送信できるようになりました。 import は実施済みの場合2回目以降はされていない、ということ知らず、上書きのように 実行のたびに何度もされるものだと思っておりました。 とても参考になりました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問