Ir para o conteúdo

E-mail

Filtre, pesquise, leia e escreva e-mails usando protocolos IMAP e SMTP.

Instalação

pip install botcity-email-plugin

Importando o plugin

Depois de instalar este pacote, a próxima etapa é importar o pacote para o seu código e começar a usar o funções.

from botcity.plugins.email import BotEmailPlugin

SMTP e permissões IMAP

Em alguns casos, para poder usar as funcionalidades de email através dos protocolos IMAP e SMTP, é necessário ativar a permissão para usar os dois protocolos nas configurações da conta. Além disso, também pode ser necessário ativar a opção para aplicativos menos seguros.

Autenticação de dois fatores

Recomendamos desativar a autenticação de dois fatores para contas de email para evitar qualquer tipo de bloqueio de bot. Se você estiver usando uma conta com autenticação de dois fatores e não for possível desativá-la, consulte a seção Autenticação de dois fatores.

Configurando conta de e-mail

Primeiro, vamos configurar nossa conta de email e fazer login com as credenciais.

# Instanciar o plug -in
email = BotEmailPlugin()

# Configure IMAP com o servidor Gmail
email.configure_imap("imap.gmail.com", 993)

# Configure SMTP com o servidor Gmail
email.configure_smtp("imap.gmail.com", 587)

# Faça login com uma conta de email válida
email.login("<USER_EMAIL>", "<USER_PASSWORD>")

Informações

Você pode usar diferentes servidores de email, as informações sobre alguns servidores podem ser vista nesta página.

Configuração alternativa

Você tem a opção de configurar os servidores que serão usados da maneira que deseja. No entanto, em alguns casos, você pode simplesmente usar as configurações padrão de um servidor conhecido e conectar sua conta rapidamente.

A configuração acima também pode ser assim:

from botcity.plugins.email import BotEmailPlugin, MailServers

# Configurar e efetuar login no mesmo método, usando as configurações padrão do servidor Gmail
email = BotEmailPlugin.config_email(MailServers.GMAIL, "<EMAIL_USUARIO>","<SENHA_USUARIO>")

Obtendo algumas mensagens de e-mail

Com a instância do plugin configurada, recuperaremos algumas mensagens de email.

Observação

Por favor, evite usar palavras que contenham acentos ou caracteres especiais ao usar os métodos para filtrar e pesquisar mensagens. Este é um problema dos servidores de email, causando uma exceção ao tentar pesquisar emails usando caracteres especiais no filtro.

# Pesquise todos os e -mails com o assunto: mensagem de teste
mensagens = email.search('SUBJECT "Mensagem de teste"')

# Para cada email encontrado: imprime a data, endereço do remetente e conteúdo de texto do email
for msg in mensagens:
    print("\n---------------------------")
    print("Data => " + msg.date_str)
    print("De => " + msg.from_)
    print("Msg => " + msg.text)

Informações

Neste exemplo, o atributo SUBJECT foi usado como filtro, você pode ter uma idéia dos atributos que podem ser usados neste link.

Veja mais detalhes sobre como criar filtros avançados nesta seção.

Outra maneira de buscar algumas mensagens de e-mail

No método search utilizado acima, é necessário passar uma string que contém o filtro que será usado. No entanto, em alguns casos, pode ser confuso e é difícil construir o filtro corretamente.

Portanto, através do método filter by, é possível selecionar o atributo que será usado no filtro e passar o valor desse atributo. Tornando muito mais fácil construir filtros ao recuperar mensagens.

from botcity.plugins.email import MailFilters

# Pesquise todos os e -mails com o assunto: mensagem de teste
mensagens = email.filter_by(MailFilters.SUBJECT, "Mensagem de teste")

Enviando uma nova mensagem do zero

Depois de recuperar alguns e-mails, enviaremos uma nova mensagem.

# Definindo os atributos que comporão a mensagem
para = ["<EMAIL_DESTINATARIO_1>", "<EMAIL_DESTINATARIO_2>"]
assunto = "Olá Mundo!"
corpo_email = "<h1>Olá!</h1> Esta é uma mensagem de teste!"
arquivos = ["meu_arquivo.txt"]

# Enviando a mensagem de e -mail
email.send_message(assunto, corpo_email, para, attachments=arquivos, use_html=True)

# Feche a conexão com os servidores IMAP e SMTP
email.disconnect()

Código completo

Vamos dar uma olhada no código completo:

# Importar o plug -in
from botcity.plugins.email import BotEmailPlugin

# Instanciar o plug -in
email = BotEmailPlugin()

# Configure IMAP com o servidor Gmail
email.configure_imap("imap.gmail.com", 993)

# Configure SMTP com o servidor Gmail
email.configure_smtp("imap.gmail.com", 587)

# Faça login com uma conta de email válida
email.login("<EMAIL_USUARIO>", "<SENHA_USUARIO>")

# Pesquise todos os e -mails com o assunto: mensagem de teste
mensagens = email.search('SUBJECT "Mensagem de teste"')

# Para cada email encontrado: imprime a data, endereço do remetente e conteúdo de texto do email
for msg in mensagens:
    print("\n---------------------------")
    print("Date => " + msg.date_str)
    print("From => " + msg.from_)
    print("Msg => " + msg.text)

# Definindo os atributos que comporão a mensagem
para = ["<EMAIL_DESTINATARIO_1>", "<EMAIL_DESTINATARIO_2>"]
assunto = "Olá Mundo!"
corpo_email = "<h1>Olá!</h1> Esta é uma mensagem de teste!"
arquivos = ["meu_arquivo.txt"]

# Enviando a mensagem de e -mail
email.send_message(assunto, corpo_email, para, attachments=arquivos, use_html=True)

# Feche a conexão com os servidores IMAP e SMTP
email.disconnect()