Я написал python код для загрузки вложений электронной почты, и этот код отлично работает, когда я запускаю его вручную (просто дважды щелкните / откройте с помощью python).
Однако, когда я попытался настроить задание в планировщике заданий, задание продолжается вечно, и выходные данные не видны (вложения в выходной папке отсутствуют). Что я тут не так сделал?
Я перепробовал все комбинации настроек планировщика, о которых мог только подумать (запускать только когда пользователь вошел в систему / запустить независимо от того, вошел ли пользователь в систему; запускать с наивысшими привилегиями)
Я также пытался определить действия различными способами:
-script: C:\Windows\System32\cmd.exe
-argument: "C:\ProgramData\Anaconda3\python.exe "C:\Users\LN\Documents\PythonScripts\outlookdownload.py""
-script: C:\ProgramData\Anaconda3\python.exe
-argument: "C:\Users\LN\Documents\PythonScripts\outlookdownload.py"
-script: C:\ProgramData\Anaconda3\python.exe
-argument: "C:\Users\LN\Documents\PythonScripts\outlookdownload.py"
-start in: C:\Users\LN\Documents\PythonScripts\
-script: C:\ProgramData\Anaconda3\python.exe
-argument: "C:\Users\LN\Documents\PythonScripts\outlookdownload.py"
-start in: C:\Users\LN\Documents\PythonScripts\"
Ниже приведен код python:
outpfolder= [output folder link]
import datetime
import win32com.client
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.Folders('Elo Inventory').Folders('Inbox')
messages = inbox.Items
message = messages.GetLast()
sentdate = message.senton.date()
datelimit = (datetime.date.today () - datetime.timedelta (days=7))
#define function to save attachment:
def OL_Attsave(outpath, name, filenamefilter):
attachments = message.Attachments
att_count = attachments.Count
for i in range(1,att_count+1):
attachment = attachments.Item(i)
if filenamefilter in attachment.FileName and "image" not in attachment.FileName:
attachment.SaveASFile(outpath + str(sentdate)+"_"+name+"_" +str(attachment.Filename))
return "saved " + str(att_count) + " files for " + name +" to " + outpath
while sentdate>datelimit:
try:
#Company1:
if message.SenderEmailAddress == "abc@company1.com" and message.subject == "INV ELO":
outpath = outpfolder + "company1\\"
name = 'company1'
OL_Attsave(outpath, name ,'')
#Company2:
elif "@company2.com" in message.SenderEmailAddress:
outpath = outpfolder + "company2\\"
name = 'company2'
OL_Attsave(outpath, name, 'INV')
message = messages.GetPrevious()
sentdate = message.senton.date()
except:
message = messages.GetPrevious()
sentdate = message.senton.date()