Skip to main content

jaiminho logo

Release PyPI PyPI - Python Version PyPI - Status

Table of content


Sobre o jaiminho

Muito mais do que um pacato cidadão de Tangamandápio, o querido carteiro Jaiminho agora inspira implementações da comunidade de desenvolvimento em diversas frentes envolvendo envio de e-mails, entrega de pacotes, sistemas de pagamentos, sistemas de notificações, entre outras ferramentas. Neste repositório, a solução jaiminho tem como principal objetivo facilitar o envio de e-mails em Python a partir da criação de módulos e funções encapsuladas com base em bibliotecas já existentes. É como o bordão clássico de evitar a fadiga e proporcionar ao usuário uma série de elementos já codificados para agilizar a construção de ferramentas que necessitem dessa troca de mensagens.

Hoje, a última versão do pacote jaiminho já pode ser encontrada no repositório PyPI e detalhes sobre novas funcionalidades poderão ser visualizadas neste repositório do GitHub. Adicionalmente, exemplos de utilização serão fornecidos para um melhor entendimento dos usuários que queiram consumir o pacote.


Instalação do Pacote

Com o ambiente virtual python ativo, para a instalação do pacote jaiminho via pip, basta executar o comando abaixo:

pip install jaiminho

Com isso, todo o ferramental disponível na última versão do pacote poderá ser usufruído. Vale citar que o pacote jaiminho para envio de e-mails possui algumas dependências associadas que são gerenciadas automaticamente no ato de sua instalação, sendo elas:

  • exchangelib: client python para envio de e-mails utilizando o servidor Exchange da Microsoft
  • pandas: poderosa ferramenta para a manipulação de dados em python
  • pretty-html-table: módulo responsável por transformar objetos DataFrame do pandas em tabelas customizadas em HTML

Funcionalidades Disponíveis

Até o presente momento, o pacote jaiminho conta com o módulo exchange.py responsável por consolidar as principais operações de envio de e-mails utilizando, como base fundamental, a biblioteca exchangelib definida acima. Em sua versão mais recente, o referido módulo está estruturado em um formato de funções e entrega, a princípio, as seguintes funcionalidades:

Função Descrição
connect_to_exchange() Realiza a conexão com o servidor Exchange a partir de credenciais fornecidas pelo usuário
create_message() Utiliza uma conta conectada ao servidor Exchange para criar uma mensagem básica
attach_file() Gerencia o processo de anexação de arquivos a uma mensagem criada
df_to_html() Transforma um objeto DataFrame em uma tabela HTML pré formatada a partir do pacote pretty-html-table
send_mail() Encapsula os processos de criação de conta, mensagem, anexo (opcional) e envia o e-mail solicitado

Cada uma das funções acima listadas possuem uma documentação completa e que pode ser acessada diretamente no respectivo módulo.


Utilização Prática

Visando propor um melhor entendimento sobre algumas das principais funcionalidades do pacote jaiminho, o código abaixo foi desenvolvido para utilizar credenciais fornecidas pelo usuário afim de conectar ao servidor Exchange e enviar uma mensagem simples a um destinatário.

# Importando bibliotecas
import jaiminho.exchange as jex
from exchangelib.errors import UnauthorizedError
import os
from dotenv import find_dotenv, load_dotenv

# Lendo variáveis de ambiente
load_dotenv(find_dotenv())

# Coletando variáveis
MAIL_USERNAME = os.getenv('MAIL_USERNAME')
MAIL_BOX = os.getenv('MAIL_BOX')
MAIL_TO = os.getenv('MAIL_TO')
MAIL_TO = [MAIL_TO] if MAIL_TO.count('@') == 1 else MAIL_TO.split(';')
SERVER = 'outlook.office365.com'

# Conectando ao servidor e obtendo conta
try:
    acc = jex.connect_to_exchange(
        username=MAIL_USERNAME,
        password=os.getenv('PASSWORD'),
        server=SERVER,
        mail_box=MAIL_BOX
    )
except UnauthorizedError as ue:
    print(f'Erro de autorização ao realizar login no servidor. Exception: {ue}')
    exit()
    
# Gerando e enviando mensagem simples
m = jex.create_message(
    account=acc,
    subject='[Jaiminho] exchange_tests.py [1]',
    body='1º teste de envio de e-mails com Jaiminho',
    to_recipients=MAIL_TO
)
m.send_and_save()

Como informado na seção anterior, o anexo de arquivos a um e-mail é uma das principais funcionalidades disponíveis para o pacote e, dessa forma, o código abaixo referencia o caminho de um arquivo qualquer, salvo localmente no sistema operacional, para anexação à mensagem a partir da função attach_file():

# Arquivo README.md salvo localmente
PROJECT_PATH = os.getcwd()
LOCAL_FILENAME = os.path.join(PROJECT_PATH, 'README.md')

# Anexando arquivo à mensagem criada pela função create_message()
m = jex.attach_file(
    message=m,
    file=LOCAL_FILENAME,
    attachment_name=os.path.basename(LOCAL_FILENAME)
)
m.send_and_save()

Por fim, propondo um encapsulamento e abstração ainda maior aos usuários finais, no exemplo abaixo será proposta um envio simples de e-mail a partir da função send_mail() que, por sua vez, realiza chamadas internas às demais funções do pacote para criação de conta, criação da mensagem, anexo de arquivos (opcional) e envio do e-mail configurado.

# Enviando e-mail sem nenhum tipo de anexo
jex.send_mail(
    username=MAIL_USERNAME,
    password=os.getenv('PASSWORD'),
    server=SERVER,
    mail_box=MAIL_BOX,
    mail_to=MAIL_TO,
    subject='[Jaiminho] exchange_tests.py [5]',
    body='5º teste de envio de e-mails com Jaiminho'
)

Para mais informações, o arquivo tests/exchange_tests.py contempla os mesmos exemplos acima e outros adicionais para um melhor detalhamento das funcionalidades disponíveis. Seu consumo é recomendado para extrair poder máximo do pacote jaiminho.


Contatos

Metadata

Release files for jaiminho 0.0.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jaiminho 0.0.8
File Size Uploaded Provenance
jaiminho-0.0.8.tar.gz 12.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for jaiminho 0.0.8
File Interpreter ABI Platform
jaiminho-0.0.8-py3-none-any.whl Python 3 none any Details

Total release size: 22.8 kB

Release files / jaiminho-0.0.8.tar.gz

Download URL jaiminho-0.0.8.tar.gz
Size 12.7 kB
Tags Source
SHA-256 checksum
How to use checksums
8a0a1a9382a82f29e7190302bff98b5353aa02da331fb2fb8bc634f1a7e85474
BLAKE2b-256 checksum
How to use checksums
84d1fe0c89e6a6f6fc24858ee5e6d00ede5b4e09226031d118c554d72922566c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.10

Release files / jaiminho-0.0.8-py3-none-any.whl

Download URL jaiminho-0.0.8-py3-none-any.whl
Size 10.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a5a1127fe50c048df7ea801b6f4672b7a4935fd0f1d883bd8e90ac7f1beb9cc2
BLAKE2b-256 checksum
How to use checksums
8cd29304267de6b61304056e1fd29417cc7268de321e7e27f8c5ac8faca2c7cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.10

Security for jaiminho 0.0.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page