[英]Monitor E-mail sent via Python win32.Dispatch('Outlook.Application')?
[英]Python client.Dispatch("outlook.application") fails in specific case (@company emails)
一切正常,除了一件事我无法向具有非标准电子邮件的客户发送电子邮件(如果他们的电子邮件是@gmail、@outlook 等,它会正常发送电子邮件)
我有一个客户使用以下电子邮件 client@company.com(显然不是真正的电子邮件),我无法将该电子邮件发送给他。 这是我的方法。 我很想得到一些帮助。
邮件.发送()
发送 pywintypes.com_error 中的文件“”第 2 行:(-2147024809,'参数不正确。',无,无)
def main_send_email(self, to, header, attached_msg, pdf_files=None):
import pythoncom
# return super().main_send_email(to, header, attached_msg, pdf_files)
self.outlook_app = client.Dispatch(
'outlook.application', pythoncom.CoInitialize())
s = client.Dispatch("Mapi.Session")
mail = self.outlook_app.CreateItem(0)
# set the account
account = None
for acc in mail.Session.Accounts:
if "39" in acc.DisplayName:
account = acc
mail._oleobj_.Invoke(*(64209, 0, 8, 0, account))
# mail.SendUsingAccount = self.outlook_app.Session.Accounts.Item(1)
# set email sender
# mail.To = 'silsilinhas@gmail.com'
mail.To = to
mail.Subject = header
mail.HTMLBody = attached_msg
if pdf_files is not None:
for pdf in pdf_files:
mail.Attachments.Add(pdf)
mail.Send()
首先,我注意到以下代码行是无用且从未使用过的:
s = client.Dispatch("Mapi.Session")
如果您自动化 Outlook,似乎不需要在代码中创建新的 MAPI 会话。
其次,当从外部应用程序自动化 Outlook 时, Send
方法可能会触发安全问题。 它可以是安全提示,也可以只是运行时抛出的异常。 有几种方法可以抑制此类提示/问题:
使用第三方组件来抑制 Outlook 安全警告。 有关详细信息,请参阅Microsoft Outlook 安全管理器。
使用不会触发此类问题/提示的低级 API 而不是 OOM。 或围绕该 API 的任何其他第三方包装器,例如 Redemption。
开发一个可以访问受信任的Application
对象的 COM 加载项。 然后使用标准 .Net 工具(远程处理)从独立应用程序与加载项进行通信。
使用组策略对象来设置机器不会引发此类问题。
安装最新的 AV 软件。
第三,您可以尝试使用Recipients
集合设置邮件项目的收件人,该集合提供了Resolve方法,该方法尝试根据通讯簿解析Recipient
对象。 在如何:以编程方式填写 Outlook 中的收件人、抄送和密件抄送字段一文中了解更多信息。
在我编写的程序中,每当我在调用 mail.Display() 之前尝试使用 mail.Send() 时,都会发现错误“(-2147024809,'参数不正确',无,无)”。
似乎相当一致,但无法解释为什么! 希望这会有所帮助(对不起,如果没有!)
...
if pdf_files is not None:
for pdf in pdf_files:
mail.Attachments.Add(pdf)
mail.Display() ##this line here
mail.Send()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.