如何让pywin32方法接受可变参数
How to Get pywin32 Methods to Accept Variable Parameters
我正在使用 pywin32 编写一个发送电子邮件通知的程序。基于错误异常
def main(recipient):
try:
mailer = Dispatch("Outlook.Application")
msg = mailer.CreateItem(0)
msg.To = recipient
msg.CC = ""
msg.Subject = "EmailTest"
msg.Body = "This is most certainly a test"
msg.Send()
success(msg.Subject, recipient)
except Exception:
failure(msg.Subject, recipient)
当 success 和 fail 方法的参数是变量(带有字符串值)时,它 returns 错误:
Traceback (most recent call last):
File "C:\pathtoprogram\thisprogram.py", line 48, in main
success(msg.Subject, recipient)
File "C:\Users\myuser\AppData\Local\Programs\Python\Python36-32\lib\site-packages\win32com\client\dynamic.py", line 516, in __getattr__
ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (4096, 'Microsoft Outlook', 'The item has been moved or deleted.', None, 0, -2147221238), None)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "C:\pathtoprogram\thisprogram.py", line 50, in main
failure(msg.Subject, recipient)
File "C:\Users\myuser\AppData\Local\Programs\Python\Python36-32\lib\site-packages\win32com\client\dynamic.py", line 516, in __getattr__
ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (4096, 'Microsoft Outlook', 'The item has been moved or deleted.', None, 0, -2147221238), None)
我不知道是什么导致了异常,但是当我直接将参数作为字符串输入时,代码运行正常。
success("mySubject", "anEmail")
except Exception:
failure("mySubject", "anEmail")
该代码可以正常工作 运行,但我需要参数为变量,因为它们需要能够从 main 方法传入。
我一直在查找类似问题的答案,但没有找到与此问题相关的答案。看起来 msg.Subject 和 msg.To 实际上并不存储字符串值,即使它们看起来像任何其他赋值语句。也许这是我想念的一件明显的事情?
任何帮助将不胜感激。
我用的是python3.6和对应的pywin32版本
问题不在于您使用变量的方式。您可以通过在调用 msg.Send()
之前检查 msg.Subject
的值来对此进行测试
请参阅 Microsoft 的 CDO(协作数据对象)文档,专门针对 Send 方法:
https://msdn.microsoft.com/en-us/library/ms527190(v=exchg.10).aspx
发送 将邮件移动到当前用户的发件箱文件夹。消息系统从发件箱中检索消息并将它们传输给收件人。传输后,一条 消息将从发件箱中删除并删除 除非 saveCopy 为 True。*
请参阅您收到的错误消息:
4096, 'Microsoft Outlook', 'The item has been moved or deleted.'
所以系统正在执行其设计目的 - 发送后删除邮件。
我正在使用 pywin32 编写一个发送电子邮件通知的程序。基于错误异常
def main(recipient):
try:
mailer = Dispatch("Outlook.Application")
msg = mailer.CreateItem(0)
msg.To = recipient
msg.CC = ""
msg.Subject = "EmailTest"
msg.Body = "This is most certainly a test"
msg.Send()
success(msg.Subject, recipient)
except Exception:
failure(msg.Subject, recipient)
当 success 和 fail 方法的参数是变量(带有字符串值)时,它 returns 错误:
Traceback (most recent call last):
File "C:\pathtoprogram\thisprogram.py", line 48, in main
success(msg.Subject, recipient)
File "C:\Users\myuser\AppData\Local\Programs\Python\Python36-32\lib\site-packages\win32com\client\dynamic.py", line 516, in __getattr__
ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (4096, 'Microsoft Outlook', 'The item has been moved or deleted.', None, 0, -2147221238), None)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "C:\pathtoprogram\thisprogram.py", line 50, in main
failure(msg.Subject, recipient)
File "C:\Users\myuser\AppData\Local\Programs\Python\Python36-32\lib\site-packages\win32com\client\dynamic.py", line 516, in __getattr__
ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (4096, 'Microsoft Outlook', 'The item has been moved or deleted.', None, 0, -2147221238), None)
我不知道是什么导致了异常,但是当我直接将参数作为字符串输入时,代码运行正常。
success("mySubject", "anEmail")
except Exception:
failure("mySubject", "anEmail")
该代码可以正常工作 运行,但我需要参数为变量,因为它们需要能够从 main 方法传入。
我一直在查找类似问题的答案,但没有找到与此问题相关的答案。看起来 msg.Subject 和 msg.To 实际上并不存储字符串值,即使它们看起来像任何其他赋值语句。也许这是我想念的一件明显的事情? 任何帮助将不胜感激。
我用的是python3.6和对应的pywin32版本
问题不在于您使用变量的方式。您可以通过在调用 msg.Send()
msg.Subject
的值来对此进行测试
请参阅 Microsoft 的 CDO(协作数据对象)文档,专门针对 Send 方法:
https://msdn.microsoft.com/en-us/library/ms527190(v=exchg.10).aspx
发送 将邮件移动到当前用户的发件箱文件夹。消息系统从发件箱中检索消息并将它们传输给收件人。传输后,一条 消息将从发件箱中删除并删除 除非 saveCopy 为 True。*
请参阅您收到的错误消息:
4096, 'Microsoft Outlook', 'The item has been moved or deleted.'
所以系统正在执行其设计目的 - 发送后删除邮件。