首页 > 解决方案 > 无法使用 Python 通过 Outlook 发送邮件

问题描述

我正在使用以下代码使用 python 发送带有附件的电子邮件。我使用 Outlook 应用程序 itelt(不是通过后端)

from time import sleep

import win32com.client as win32

outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = "EMAIL ADDRESS"
mail.Subject = "Subject"
mail.HtmlBody = "HTML Body"
mail.Attachments.Add("folderName\\output.zip")
mail.Display(True)
sleep(1)
mail.Send()

它工作正常,直到行 mail.Display(True)。我可以看到打开的 Outlook 新邮件窗口,其中输入了所有内容并附加了文件。但下一条语句 mail.send() 给出错误:

Traceback (most recent call last):   File "C:/Users/username/PycharmProjects/001.PySelenium/win32email.py", line 16, in <module>
    mail.send()   File "C:\Users\username\PycharmProjects\001.PySelenium\venv\lib\site-packages\win32com\client\dynamic.py", line 516, in __getattr__
    ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1) pywintypes.com_error: (-2147467260, 'Operation aborted', None, None)

调试截图:

在此处输入图像描述

标签: pythonwinapioutlook

解决方案


请用mail.Send()

顺便说一句,如果您想使用 Python 自动通过 Outlook 发送邮件。

请发表评论mail.Display(True)sleep(1)或者在手动保存对邮件的更改之前无法发送邮件。

请试试:

import win32com.client

outlook = win32com.client.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = "my@mail.com"
mail.Subject = "Test"
mail.Body = "Mail"
mail.Attachments.Add("folderName\\output.zip")

mail.Send()

推荐阅读