Python监视指定邮件名的邮箱并提示收到新邮件,支持邮件名模糊搜索。

可以使用Python中的imaplib库和email库来实现监视指定邮件名的邮箱并提示收到新邮件的功能。

一、连接邮箱并登录。

import imaplib
import email
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('your_email', 'your_password')
mail.select('inbox')

二、使用搜索条件来搜索指定邮件名的邮件。

search_criteria = f'(FROM "{
      
      sender}" SUBJECT "{
      
      subject}")'
status, email_ids = mail.search(None, search_criteria)

其中,sender为发件人地址,subject为邮件主题。搜索结果将返回一个字符串,包含符合条件的邮件的ID。

要监视所有以"New Message"开头的邮件,可以使用以下搜索条件:

search_criteria = f'(FROM "{
      
      sender}" SUBJECT "New Message*")'

如果要匹配包含"New Message"的邮件,可以使用以下搜索条件:

search_criteria = f'(FROM "{
      
      sender}" SUBJECT "%New Message%")'

三、可以根据邮件ID获取邮件内容。

id_list = email_ids[0].split()
if id_list:
    latest_email_id = id_list[-1]
    status, email_data = mail.fetch(latest_email_id, "(RFC822)")
    raw_email = email_data[0][1]
    email_message = email.message_from_bytes(raw_email)

四、可以根据需要对邮件内容进行处理和提示。

可以使用Python的标准库tkinter弹出一个提示框显示邮件内容。

import tkinter as tk
root = tk.Tk()
root.withdraw()
msg = f"New email from {
      
      sender} with subject '{
      
      subject}'\n\n{
      
      email_message.get_payload()}"
tk.messagebox.showinfo(title="New Email", message=msg)

五、完整代码如下

import imaplib
import email
import tkinter as tk
# 邮箱登录信息
email_address = 'your_email'
email_password = 'your_password'
# 搜索条件
sender = '[email protected]'
subject = 'New Message'
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login(email_address, email_password)
mail.select('inbox')
# 搜索符合条件的邮件
search_criteria = f'(FROM "{
      
      sender}" SUBJECT "{
      
      subject}")'
status, email_ids = mail.search(None, search_criteria)
# 获取最新的邮件内容
id_list = email_ids[0].split()
if id_list:
    latest_email_id = id_list[-1]
    status, email_data = mail.fetch(latest_email_id, "(RFC822)")
    raw_email = email_data[0][1]
    email_message = email.message_from_bytes(raw_email)
    # 弹出提示框显示邮件内容
    root = tk.Tk()
    root.withdraw()
    msg = f"New email from {
      
      sender} with subject '{
      
      subject}'\n\n{
      
      email_message.get_payload()}"
    tk.messagebox.showinfo(title="New Email", message=msg)

猜你喜欢

转载自blog.csdn.net/weixin_44045828/article/details/129850712