使用腾讯企业邮箱免费版时:如何用Python脚本自动批量删除收件箱邮件

一、实现思路

网页爬取与解析:使用 Python 工具(如 
selenium

requests
 等)访问邮箱网页,并解析页面内容。浏览器自动化:使用 
selenium
 模拟浏览器操作,例如点击全选按钮、删除按钮等。循环处理:由于邮件数量较多,分页处理,逐页执行删除操作。登录邮箱:首先需要登录邮箱,以获取操作权限。

二、具体过程

1、首先安装Python和pip(步骤省略)

2、设置pip代理:

   2.1 使用镜像源

        2.1.1、阿里云PyPI镜像:

        配置pip使用阿里云的PyPI镜像。你可以通过以下命令来实现:

        pip install -i https://mirrors.aliyun.com/pypi/simple/ some-package

        或者,如果你想永久性地使用阿里云的镜像,可以配置pip的配置文件:

        pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/

        2.1.2豆瓣PyPI镜像:

        使用豆瓣的PyPI镜像的方法与使用阿里云的类似:


   pip install -i https://pypi.doubanio.com/simple/ some-package

        或者永久配置:


   pip config set global.index-url https://pypi.doubanio.com/simple/

        2.2 设置HTTP/HTTPS代理

        如果你需要通过HTTP或HTTPS代理来访问外部网络,你可以在pip命令中通过
--proxy
选项来指定代理服务器。例如:

        pip install some-package –proxy http://proxyserver:port

        或者,你也可以在pip的配置文件中设置代理:

打开
~/.pip/pip.conf
文件(如果没有这个文件,就创建一个)。

添加或修改以下内容:



[global]
proxy = http://proxyserver:port
 
如果你需要为HTTPS单独设置代理,可以使用:
 
[global]
trust_lang = en
proxy = http://proxyserver:port
https-proxy = https://proxyserver:port

3、 安装依赖库

pip install selenium

如下图:

4、下载 Selenium 的浏览器驱动

根据使用的浏览器选择对应的驱动:

Chrome 需要下载 ChromeDriver。Firefox 需要下载 GeckoDriver。 将驱动程序放在项目目录中,或者设置环境变量。

比如使用谷歌游览器,其版本是: 142.0.7444.163,如下:

ChromeDrive下载地址如下:

https://googlechromelabs.github.io/chrome-for-testing/#stable

选择游览器对应版本的驱动版本:如下图:

将驱动下载解压后,记住路径:

5、编写Python代码 main.py:

driver_path :为上一步驱动exe文件的路径;

登录邮箱:可以选择自动或手动

注意:代码尚未好好打磨,启动时有时会卡住,多执行几次!



from selenium import webdriver
from selenium.common import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import time
 
def delete_emails():
    # 1. 设置浏览器驱动路径
    driver_path = "C://Users//skyable//Downloads//chromedriver-win64//chromedriver.exe"  # 替换为你的驱动路径
    options = webdriver.ChromeOptions()
    options.add_argument("--start-maximized")  # 全屏显示浏览器
 
    # 2. 初始化 Selenium 驱动
    driver = webdriver.Chrome(executable_path=driver_path, options=options)
 
    # 3. 打开邮箱网页
    driver.get("https://exmail.qq.com/cgi-bin/frame_html")
 
    # 4. 登录邮箱(手动或自动输入账号和密码)
    # 如果手动登录,则注释掉下面登录相关代码,并手动登录邮箱
    # 如果需要自动登录,可以填写以下信息
    time.sleep(3)
    print("开始点击`其他登录方式`")
    try:
        other_type_button = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "show_other_panel")))
        # other_login_button = driver.find_element(By.CSS_SELECTOR, ".show_other_panel.js_show_other_panel")
        other_type_button.click()
        time.sleep(2)
        print("开始点击`账号密码`")
        login_footer_btn = driver.find_element(By.CSS_SELECTOR, ".login_footer_btn.js_show_pwd_panel")
        login_footer_btn.click()
    except TimeoutException:
        print("登录页面加载超时")
        driver.quit()
        return
 
    time.sleep(2)
    print("开始自动输入用户名和密码")
    driver.find_element(By.NAME, "inputuin").send_keys("xxxx.cn") # 填写邮箱登录用户名
    driver.find_element(By.NAME, "pp").send_keys("xxxx") # 填写邮箱登录用密码
    driver.find_element(By.NAME, "btlogin").click()
 
    print("登录成功,等待页面加载")
    time.sleep(3)
 
    # 如果手动登录,则需要等待登录完成,按回车键继续
    # input("请手动登录邮箱,完成后按回车键继续:")
 
    # 5. 点击进入“收件箱”
    inbox_button = driver.find_element(By.ID, "folder_1_td")
    inbox_button.click()
 
    # 等待iframe加载完成并切换到iframe
    try:
        iframe = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "mainFrame")))  # 替换为实际的iframe ID
        driver.switch_to.frame(iframe)
    except TimeoutException:
        print("iframe加载超时")
        driver.quit()
        return
 
    # 等待页面加载
    try:
        element = WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.CLASS_NAME, "toarea")))
        print("toarea 元素已找到")
    except TimeoutException:
        print("元素加载超时")
        driver.quit()
        return
 
    # 6. 循环删除所有邮件
    all_emails_deleted = False
    while not all_emails_deleted:
        try:
            # 定位全选按钮
            select_all_button = WebDriverWait(driver, 10).until(
                EC.presence_of_element_located((By.CSS_SELECTOR, "[data-csp-88475e6692c343029fc3c2748a6770b0]")))
            # 点击全选按钮
            select_all_button.click()
 
            # 点击删除按钮
            delete_button = WebDriverWait(driver, 10).until(
                EC.presence_of_element_located((By.ID, "quick_del")))
            delete_button.click()
 
            # 等待删除确认(这里假设无需手动确认,如果需要确认,请取消注释)
            # WebDriverWait(driver, 5).until(EC.alert_is_present())
            # alert = driver.switch_to.alert
            # alert.accept()  # 确认删除
 
            print("删除完成(无需手动确定), 自动刷新页面")
 
            time.sleep(2)  # 等待页面加载
 
            # 刷新页面,准备下一页
            # driver.refresh()
            # time.sleep(2)  # 等待页面加载
 
            # 检查是否还有邮件
            if "没有邮件" in driver.page_source:
                print("所有邮件已删除完毕!")
                all_emails_deleted = True
 
        except Exception as e:
            print(f"发生错误:{e}")
            driver.quit()
            delete_emails()  # 重新运行函数
 
    # 7. 退出浏览器
    driver.quit()
 
# 调用函数开始删除邮件
delete_emails()

6、执行程序:

 Python .main.py

执行打印如下图:

这样页面就会自动删除

直到删除完成:

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
中原工作处的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容