0
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()

我错过了什么?

4

0 回答 0