python win32com outlook 2013 SendUsingAccount return 异常
python win32com outlook 2013 SendUsingAccount return exception
在使用 python 和 win32com api 进行简单的邮件自动化时,我遇到了 SendUsingAccount 问题。当我从 windows 7 升级到 windows 10.
时,它被忽略了,或者更糟的是,生成了一个错误
这是我的原始代码
import win32com.client
o = win32com.client.Dispatch("Outlook.Application")
oacctouse = None
for oacc in o.Session.Accounts:
if oacc.SmtpAddress == "sender@mail.com":
oacctouse = oacc
break
Msg = o.CreateItem(0)
if oacctouse:
Msg.SendUsingAccount = oacctouse
if to:
Msg.To = ";".join(to)
if cc:
Msg.CC = ";".join(cc)
if bcc:
Msg.BCC = ";".join(bcc)
Msg.HTMLBody = ""
Msg.Send()
导致出现以下错误:
追溯(最近一次通话):
Exec 中的文件 "C:\Program Files (x86)\JetBrains\PyCharm 5.0.3\helpers\pydev\pydevd_exec.py",第 3 行
在 global_vars、local_vars 中执行 exp
文件“”,第 1 行,位于
文件 "C:\Python27\lib\site-packages\win32com\client\dynamic.py",第 560 行,在 setattr 中
self.oleobj.Invoke(entry.dispid, 0, invoke_type, 0, 值)
com_error: (-2147417851, '\x83T\x81[\x83o\x81[\x82\xc9\x82\xe6\x82\xc1\x82\xc4\x97\xe1\x8aO\x82\xaa\x95\xd4\x82\xb3\x82\xea\x82\xdc\x82\xb5\x82\xbd\x81B', None, None)
我的系统是日文的。
我会在下面回答我的问题。
所以,我偶然在最底部的 this thread 上找到了我的问题的解决方案(大部分是针对 VBA 但最后的 post 解决了 python 问题).
这是工作代码
import win32com.client
o = win32com.client.Dispatch("Outlook.Application")
oacctouse = None
for oacc in o.Session.Accounts:
if oacc.SmtpAddress == "sender@mail.com":
oacctouse = oacc
break
Msg = o.CreateItem(0)
if oacctouse:
Msg._oleobj_.Invoke(*(64209, 0, 8, 0, oacctouse)) # Msg.SendUsingAccount = oacctouse
if to:
Msg.To = ";".join(to)
if cc:
Msg.CC = ";".join(cc)
if bcc:
Msg.BCC = ";".join(bcc)
Msg.HTMLBody = ""
Msg.Send()
对于其他不幸看到他们的辅助帐户名称显示在 "for oacc in o.Session.Accounts:" 循环下的人:尝试使用 Msg.SentOnBehalfOfName = '2ndaryemail@mail.com' 。这对我有用!
在使用 python 和 win32com api 进行简单的邮件自动化时,我遇到了 SendUsingAccount 问题。当我从 windows 7 升级到 windows 10.
时,它被忽略了,或者更糟的是,生成了一个错误这是我的原始代码
import win32com.client
o = win32com.client.Dispatch("Outlook.Application")
oacctouse = None
for oacc in o.Session.Accounts:
if oacc.SmtpAddress == "sender@mail.com":
oacctouse = oacc
break
Msg = o.CreateItem(0)
if oacctouse:
Msg.SendUsingAccount = oacctouse
if to:
Msg.To = ";".join(to)
if cc:
Msg.CC = ";".join(cc)
if bcc:
Msg.BCC = ";".join(bcc)
Msg.HTMLBody = ""
Msg.Send()
导致出现以下错误: 追溯(最近一次通话): Exec 中的文件 "C:\Program Files (x86)\JetBrains\PyCharm 5.0.3\helpers\pydev\pydevd_exec.py",第 3 行 在 global_vars、local_vars 中执行 exp 文件“”,第 1 行,位于 文件 "C:\Python27\lib\site-packages\win32com\client\dynamic.py",第 560 行,在 setattr 中 self.oleobj.Invoke(entry.dispid, 0, invoke_type, 0, 值) com_error: (-2147417851, '\x83T\x81[\x83o\x81[\x82\xc9\x82\xe6\x82\xc1\x82\xc4\x97\xe1\x8aO\x82\xaa\x95\xd4\x82\xb3\x82\xea\x82\xdc\x82\xb5\x82\xbd\x81B', None, None)
我的系统是日文的。
我会在下面回答我的问题。
所以,我偶然在最底部的 this thread 上找到了我的问题的解决方案(大部分是针对 VBA 但最后的 post 解决了 python 问题).
这是工作代码
import win32com.client
o = win32com.client.Dispatch("Outlook.Application")
oacctouse = None
for oacc in o.Session.Accounts:
if oacc.SmtpAddress == "sender@mail.com":
oacctouse = oacc
break
Msg = o.CreateItem(0)
if oacctouse:
Msg._oleobj_.Invoke(*(64209, 0, 8, 0, oacctouse)) # Msg.SendUsingAccount = oacctouse
if to:
Msg.To = ";".join(to)
if cc:
Msg.CC = ";".join(cc)
if bcc:
Msg.BCC = ";".join(bcc)
Msg.HTMLBody = ""
Msg.Send()
对于其他不幸看到他们的辅助帐户名称显示在 "for oacc in o.Session.Accounts:" 循环下的人:尝试使用 Msg.SentOnBehalfOfName = '2ndaryemail@mail.com' 。这对我有用!