Sub WorkWithEmails(Item As Outlook.MailItem)
Dim oLookItem As Object
Dim oLookMail As MailItem
Dim oLookFldr As Folder
Dim oLookName As NameSpace
Dim Ret_Val
Set objShell = VBA.CreateObject("Wscript.Shell")
Set oLookName = Application.GetNamespace("MAPI")
Set oLookFldr = oLookName.GetDefaultFolder(olFolderInbox)
For Each oLookItem In oLookFldr.Items
If TypeOf oLookItem Is MailItem Then
Debug.Print oLookItem.Subject
'Debug.Print oLookMail.ReceivedTime
'Debug.Print oLookMail.Sender
'Debug.Print oLookMail.SenderEmailAddress
Debug.Print oLookItem.Body
Ret_Val = Shell("path\Python37\python.exe " & "path\draft.py" & " -t " & oLookItem.Subject & " -d " & oLookItem.Body)
End If
Next
End Sub
此代码以错误终止,因为如果我理解正确,则该规则的触发时间早于文件夹中出现的字母(事件)
我试过了:
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
Sub WorkWithEmails(Item As Outlook.MailItem)
Sleep (5000)
...
和
...
Sleep (5000)
For Each oLookItem In oLookFldr.Items
在这种情况下,当收到一封新信时,什么都不会发生。
如果您运行, Sub WorkWithEmails(),那么您可以完美地解决所有问题(前提是该字母在文件夹中)。
草稿.py
from datetime import datetime
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-t")
parser.add_argument("-d")
args = parser.parse_args()
f = open('path/logs/jira.log', 'a')
f.write(str(datetime.now().strftime('%d%m%y')) + ':' + args.t + ', ' + args.d + '\n')
f.close()
我错过了什么?