![](/img/trans.png)
[英]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.