首页 > 编程问答 >如何打开 Outlook、打开电子邮件并单击下载按钮?

如何打开 Outlook、打开电子邮件并单击下载按钮?

时间:2024-07-31 12:14:41浏览次数:10  
标签:python win32com

我使用批处理文件来运行打开和关闭 Outlook。打开后,如何使用 python 'import win32com.client' 库打开电子邮件,并单击下载按钮?有什么建议吗?

report download

我能够从电子邮件下载附件,但是他们停止将文件作为附件发送,但现在改为下载链接..

import datetime
import os
import win32com.client 
from pathlib import Path
home = str(Path.home())path = 'where to download'
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")  #opens outlookinbox = outlook.GetDefaultFolder(6)messages = inbox.Items
def saveattachemnts(subject):for message in messages:if message.Subject == subject and message.Unread:#if message.Unread:  #I usually use this because the subject line contains time and it varies over time. So I just use unread
        # body_content = message.body
        attachments = message.Attachments
        attachment = attachments.Item(1)
        for attachment in message.Attachments:
            attachment.SaveAsFile(os.path.join(path, str(attachment)))
            if message.Subject == subject and message.Unread:
                message.Unread = False
            break                
saveattachemnts('Scheduled Report BI Report - All NPIs - Active and Net New NPIs (Do Not Edit): You have received a new report')

无法直接使用 win32com.client 点击电子邮件中的下载按钮。这是因为 win32com.client 主要与 Outlook 对象模型交互,该模型允许访问和操作电子邮件、文件夹和附件等元素,但不能控制电子邮件正文中显示的网页内容。

为了实现的目标,需要使用可以与网页交互的工具或库。以下是两种常用的方法:

1. 使用 Web 自动化工具

  • Selenium: 这是一个流行的 Web 自动化框架,可用于控制 Web 浏览器(如 Chrome 或 Firefox)。可以使用 Selenium 打开包含下载链接的电子邮件,找到下载按钮,然后模拟点击操作以下载文件。

以下是一个使用 Selenium 和 Chrome 浏览器实现此目的的 Python 代码示例:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 设置 Chrome 驱动程序路径
driver_path = 'path/to/chromedriver'

# 创建 Chrome 驱动程序实例
driver = webdriver.Chrome(driver_path)

# 打开包含下载链接的电子邮件
driver.get("email_url")

# 等待下载按钮出现并点击
download_button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Download')]"))
)
download_button.click()

# 关闭浏览器
driver.quit()

2. 使用 HTTP 请求库

  • Requests: 可以使用 requests 库直接向下载链接发送 HTTP 请求。这种方法需要检查网页源代码以找到下载链接的 URL。

以下是一个使用 requests 库下载文件的示例:

import requests

# 下载链接 URL
download_url = "https://example.com/download_file"

# 发送 HTTP 请求以下载文件
response = requests.get(download_url)

# 保存文件
with open("downloaded_file.xlsx", "wb") as file:
    file.write(response.content)

请注意,这两种方法都需要对 Web 开发和 HTML 结构有一定的了解。需要检查电子邮件正文的 HTML 源代码,以找到下载按钮或下载链接的标识符(例如 ID、类名或 XPath)。

此外,还需要将这些代码片段与现有的 Outlook 自动化脚本集成,以便在打开电子邮件后执行它们。

标签:python,win32com
From: 78814387

相关文章

  • 如何在Python中处理FileNotFoundException
    我有一个函数可以从路径读取avro文件(按日文件夹)并将其写入相同的路径(聚合到按月的文件夹)。如果文件夹有.avro文件,该函数可以正常工作。但如果文件夹为空,我会收到错误。java.io.FileNotFoundException:Noavrofilesfound.Iffilesdon'thave.avroextension,set......
  • 有谁知道如何在 ROS 中使用 python 开发赛车模拟编码?
    在模拟中,主要目标是让自动驾驶汽车读取AprilTags并根据标牌提供的说明进行导航。AprilTags是一种基准标记,可作为重要的视觉提示,传达有关汽车周围环境的信息,例如方向、速度限制和其他关键路标。汽车的车载视觉系统应该检测这些标签,解码嵌入的数据,并相应地调整其运动。这包括在......
  • python实现提取视频帧的图片
    文章目录1、需求痛点2、完整代码⭐3、代码分析3.1、需要改动的地方3.2、OpenCV库的使用3.3、多线程技术4、执行效率5、效果展示⭐6、注意事项......
  • 三种语言实现差分(C++/Python/Java)
    题目输入一个长度为n的整数序列。接下来输入m个操作,每个操作包含三个整数l,r,c表示将序列中[l,r]之间的每个数加上c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数序列。接下来m行,每行包含三个整数l,r,c,表......
  • Python编程的16个坏习惯
    1、手动进行字符串格式化#坏习惯name="Alice"greeting = "Hello, " + name +"!" #好习惯name="Alice"greeting=f"Hello,{name}!" 理由:使用+进行字符串拼接会导致代码可读性差,而且在复杂情况下容易出错,f-string可读性更好 2、手动关闭文件#坏习惯......
  • Flask框架入门:快速搭建轻量级Python网页应用
    转载: Flask框架入门:快速搭建轻量级Python网页应用1. Flask基础Flask是一个使用Python编写的轻量级Web应用框架。它的设计目标是让Web开发变得快速简单,同时保持应用的灵活性。Flask依赖于两个外部库:Werkzeug和Jinja2,Werkzeug作为WSGI工具包处理Web服务的底层细节,Jinja2作为......
  • 我有一个“pywhatkit”python 模块属性错误。你能帮我吗?
    Pywhatkit已成功安装,但在任何属性代码中都显示属性错误。我可以修复它吗?我尝试过的代码:importpywhatkitpywhatkit.sendmsg('071*******','Ado',15,48)我如何修复这个问题:我将程序文件名“pywhatkit.py”重命名为“anotername.py”。谢谢所有帮......
  • 如何使用Python获取Excel文件中嵌入图像的位置?
    我正在使用包含嵌入图像的Excel文件(.xlsx)。我需要使用Python以编程方式提取这些图像的位置(单元格引用)。这是我到目前为止所尝试过的:任何建议将不胜感激。使用openpyxl和openpyxl-image-loader:我没有处理嵌入图像。解压缩Excel文件并检查内容:......
  • cmd输入python直接弹出windows应用商店
    明明已经安装好了python,并且也确认配置好了python的环境变量,但是在cmd里输入python后,直接弹出windows商店,python获取界面,其实只需要关闭系统里的应用执行别名设置,最近出来的电脑系统里是自带开启了python相关的执行别名。步骤是【设置】-【应用】-【高级应用设计】-【应用执行名称......
  • Python 数学问题:(2**3+(5+6)**(1+1)) =?
    (2**3+(5+6)**(1+1))=?如果您能提供一步一步的解决方案,我将不胜感激。计算机向我展示了答案,但我只是不知道它是如何得出的。所以,如果可以的话,让我知道就太好了。我已经被“**”部分困住了,而且也对“3”的用途感到困惑。我尝试了这个问题,得到了131,但这不是答案。让我......