python - 无法使用 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)
调试截图:
解决方案
请用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()
推荐阅读
- c++ - 使用模板重载运算符 []
- php - Laravel 为外部用户登录成功设置会话或令牌 - 无用户仅数据库 Api 用户
- python - 如何将信息获取到数据框?
- java - Elasticsearch:java.lang.IllegalArgumentException:在 docker 容器上运行时不允许自我抑制
- c++ - 为什么我的后增量运算符重载在 cout 流中不起作用?
- php - Symfony LexikMaintenanceBundle - 服务“lexik_maintenance.driver.factory”依赖于不存在的服务“translator.default”
- python - Django Admin 如何添加过滤器菜单,如基本 UserModel:
- angular - 角模板冻结直到操作完成
- postgresql - 如何在逗号后使用 3 个数字将 varchar 转换为浮点类型 PostgreSQL
- android - 在 Android 8.0 (Oreo) 中打开几秒钟后热点会自动关闭