Python lee y analiza los correos electrónicos del buzón, lee el asunto, el contenido y la hora del correo electrónico

Cuando Python lee correos electrónicos, primero debe habilitar el servicio IMAP o POP en el buzón, que generalmente se puede habilitar en la interfaz de configuración del buzón, pero parece que no está habilitado de forma predeterminada.

¿Qué es IMAP? ¿Cuál es la diferencia entre IMAP y POP? : https://open.work.weixin.qq.com/help2/pc/19887?person_id=1

Tomando como ejemplo el buzón de Tencent, en la misma interfaz donde está habilitado el servicio imap, verá la configuración relevante:

接收服务器:
imap.exmail.qq.com(使用SSL,端口号993)
发送服务器:
smtp.exmail.qq.com(使用SSL,端口号465)

Aquí solo leemos, por lo que la configuración correspondiente es:

import imaplib
email_value_config = {
    
    
	'imap_server': 'imap.exmail.qq.com', 
	'username': '[email protected]', 
	'password': 'xxxxx', 
}
email_server = imaplib.IMAP4_SSL(email_value_config['imap_server']) # 这样就已经链接到目标邮箱了
email_server.login(email_value_config["username"], email_value_config['password']) # 这里登录

Las operaciones posteriores son:

  1. Seleccione el contenido que desea operar, como [Bandeja de entrada], [Papelera de reciclaje], etc., y use el programa:

    email_server.select('INBOX')  # 选择【收件箱】
    

    De uso común puede referirse a:

    INBOX 收件箱
    Sent Messages 已发送
    Drafts 草稿箱
    Deleted Messages 已删除
    Junk 垃圾箱
    
  2. Seleccione los correos electrónicos que desea extraer de acuerdo con las condiciones del filtro, se pueden usar todas las extracciones ALLy luego devuelva la identificación de correo electrónico que cumpla con las condiciones y bloquee el correo electrónico único de acuerdo con la identificación de correo electrónico.

programa de muestra

import imaplib
import email
from email.utils import parsedate_to_datetime
from email.header import make_header, decode_header


email_value_config = {
    
    
	'imap_server': 'imap.exmail.qq.com', 
	'username': '[email protected]', 
	'password': 'xxxxx', 
}

def extract_email():
    email_server = imaplib.IMAP4_SSL(email_value_config['imap_server'])
    email_server.login(email_value_config["username"], email_value_config['password'])
    email_server.select('INBOX')  # 选择【收件箱】
    # 选择收件箱
    _typ, _search_data = email_server.search(None, 'ALL')
    # 开始解析
    mailidlist = _search_data[0].split()  # 转成标准列表,获得所有邮件的ID
    print(f'一共解析邮件数量:{
      
      len(mailidlist)}')
    # 解析内容:
    for mail_id in mailidlist:
        result, data = email_server.fetch(mail_id, '(RFC822)')  # 通过邮件id获取邮件
        email_message = email.message_from_bytes(data[0][1])  # 邮件内容(未解析)
        subject = make_header(decode_header(email_message['SUBJECT']))  # 主题
        mail_from = make_header(decode_header(email_message['From']))  # 发件人
        mail_dt = parsedate_to_datetime(email_message['Date']).strftime("%Y-%m-%d %H:%M:%S")  # 收件时间
        email_info = {
    
    
            "主题": str(subject),
            "发件人": str(mail_from),
            "收件时间": mail_dt,
        }
        print(email_info)


if __name__ == '__main__':
    extract_email()

ps: para ver todos los buzones de correo opcionales, puede utilizar el siguiente programa:

# 查看全部可选择的邮箱:
for i in email_server.list()[1]:
    l = i.decode().split(' "/" ')
    print(l[0] + " = " + l[1])

Supongo que te gusta

Origin blog.csdn.net/weixin_35757704/article/details/132623569
Recomendado
Clasificación