Uso de atributos y filtros de correo electrónico¶
Como se mostró anteriormente en la sección obteniendo algunos mensajes de correo electrónico, podemos utilizar diferentes atributos en un filtro al recuperar algunos correos electrónicos.
El método search¶
Una forma de buscar correos electrónicos utilizando filtros es a través del método search
, en este caso se debe pasar una cadena completa que se refiera al criterio a utilizar. De esta manera, es responsabilidad del usuario utilizar los atributos y la sintaxis correctamente.
Búsqueda avanzada¶
Con la posibilidad de construir una búsqueda manualmente, podemos crear una búsqueda avanzada utilizando un solo atributo o combinando diferentes atributos.
Utilizando un solo atributo¶
Básicamente, la estructura de la cadena de criterios está compuesta por el nombre del atributo en letras mayúsculas seguido del valor del atributo entre comillas. También se puede utilizar la cadena entre ()
, para que sea más organizada.
En general, para cada atributo, la estructura utilizada será algo como esto: '(NOMBRE_DEL_ATRIBUTO "valor_para_este_atributo")'.
# search using email subject only
subject_search = '(SUBJECT "Test Message")'
# Searches for all emails that have "Test Message" as subject
messages_search_1 = email.search(subject_search)
# search considering only the address that sent the email
from_search = '(FROM "test@email.com")'
# Searches for all emails sent from this address
messages_search_2 = email.search(from_search)
Utilizando múltiples atributos¶
Además de utilizar atributos individualmente, también es posible combinar múltiples atributos en la misma cadena de criterios.
Básicamente, esto sería equivalente a una operación AND. Solo se devolverán los mensajes que cumplan con todos los criterios.
También es posible realizar operaciones OR para buscar mensajes por algún atributo.
En este caso, simplemente inserta OR
al principio de la cadena y mantén los criterios de la misma manera.
Tabla: atributos del método search¶
Consulta la tabla de los atributos más comunes utilizados en el método search
para crear cadenas de búsqueda:
Atributo | Descripción | Tipo de valor |
---|---|---|
SEEN/UNSEEN |
con/sin la bandera Vista | str |
FROM |
contiene la cadena especificada en el campo FROM de la estructura del sobre | str |
TO |
contiene la cadena especificada en el campo TO de la estructura del sobre | str |
CC |
contiene la cadena especificada en el campo CC de la estructura del sobre | str |
BCC |
contiene la cadena especificada en el campo BCC de la estructura del sobre | str |
SUBJECT |
contiene la cadena especificada en el campo SUBJECT de la estructura del sobre | str |
BODY |
contiene la cadena especificada en el cuerpo del mensaje | str |
ON |
la fecha interna está dentro de la fecha especificada | str |
SINCE |
la fecha interna está dentro o después de la fecha especificada | str |
BEFORE |
la fecha interna es anterior a la fecha especificada | str |
Tip
Consulta más detalles sobre los atributos que se pueden utilizar en este enlace. Recuerda que todos los atributos son de tipo str
en el método search
.
El método filter_by¶
En algunos casos, la forma anterior puede resultar un poco confusa o generar dudas al construir la cadena de filtro. Por lo tanto, es posible utilizar el método filter_by
como un "atajo" para crear los filtros.
from botcity.plugins.email import MailFilters
from datetime import datetime
# You can view and select an attribute using: MailFilters.<ATTRIBUTE_NAME>
# Searches for all emails sending by the address: joao@email.com
messages = email.filter_by(MailFilters.FROM, "joao@email.com")
# Searches for all emails that have not yet been read
messages = email.filter_by(MailFilters.SEEN, False)
# Searches for all emails that were received on the date: 15/02/2022
messages = email.filter_by(MailFilters.ON_DATE, datetime(2022, 2, 15).date())
En este caso, no es necesario preocuparse por la sintaxis de la cadena de filtro, simplemente pasa el atributo deseado en el filtro y el valor que este atributo debe tener.
Tabla: atributos del método filter_by¶
Los atributos que se pueden utilizar están definidos en la clase MailFilters
como un Enum, la siguiente tabla muestra los atributos que están definidos y qué tipos de valores pueden recibir:
Atributo | Descripción | Tipo de valor |
---|---|---|
SEEN |
con/sin la bandera Vista | bool |
FROM |
dirección del remitente del correo electrónico | str |
TO |
dirección del destinatario como TO | str |
CC |
dirección del destinatario como CC | str |
BCC |
dirección del destinatario como BCC | str |
SUBJECT |
el asunto del correo electrónico | str |
TEXT_CONTENT |
contiene el texto en el cuerpo del correo electrónico | str |
ON_DATE |
la fecha del correo electrónico está dentro de la fecha especificada | date |
DATE_GREATER_THAN |
la fecha del correo electrónico está dentro o después de la fecha especificada | date |
DATE_LESS_THAN |
la fecha del correo electrónico es anterior a la fecha especificada | date |