Skip to main content

App Django reutilizavel para envio de emails via SMTP com suporte a anexos locais e por URL.

Project description

send-email-dev

App Django reutilizavel para envio de e-mails via SMTP, com suporte a:

  • Corpo em texto + HTML (alternative) automatico, com rodape configuravel
  • Anexos locais (caminho no disco)
  • Anexos por URL (faz o download e anexa)
  • Configuracao 100% via variaveis de ambiente (.env) usando python-decouple
  • Comando de setup automatico que cria/atualiza o .env do projeto
  • (Opcional) Endpoint REST pronto para enviar e-mail (requer DRF)

Instalacao

pip install send-email-dev

Se quiser tambem o endpoint REST pronto, instale com o extra drf:

pip install "send-email-dev[drf]"

No requirements.txt:

send-email-dev==0.1.1

Importante: o nome de instalacao e send-email-dev, mas o nome de import dentro do codigo Python e django_email_sender (ver exemplos abaixo).


Configuracao no projeto

1. Adicione em INSTALLED_APPS

# settings.py
INSTALLED_APPS = [
    # ...
    "django_email_sender",
]

2. Rode o setup

python manage.py setup_email_sender

Isso cria (ou complementa) o .env na raiz do projeto com as variaveis:

SMTP_SERVIDOR=smtp.zoho.com
SMTP_PORTA=465
SMTP_USAR_SSL=True
EMAIL_USUARIO=seu_email@exemplo.com
EMAIL_SENHA=sua_senha_de_app
EMAIL_RODAPE_HTML=Enviado via django-email-sender

Opcoes do comando:

Flag Descricao
--force Sobrescreve variaveis ja existentes no .env
--path Define um caminho alternativo para o .env

3. Preencha as credenciais reais no .env

Em provedores como Gmail/Zoho/Outlook, use senha de app, nao a senha pessoal.

4. (Opcional) Carregue o .env no settings.py

Como a lib usa python-decouple, basta ter o arquivo .env na raiz que ele e lido automaticamente — voce nao precisa configurar nada extra no settings.py.


Uso da funcao

Em qualquer view, service, task ou shell:

from django_email_sender import enviar_email

enviar_email(
    destinatario="cliente@exemplo.com",
    assunto="Bem-vindo!",
    corpo="Ola, obrigado por se cadastrar.",
)

Com anexo local

enviar_email(
    destinatario="cliente@exemplo.com",
    assunto="Sua nota fiscal",
    corpo="Segue em anexo a nota fiscal.",
    anexo_path="/caminho/local/nota_fiscal.pdf",
)

Com anexo via URL

enviar_email(
    destinatario="cliente@exemplo.com",
    assunto="Documento",
    corpo="Segue o documento solicitado.",
    anexo_url="https://meu-bucket.s3.amazonaws.com/doc.pdf",
)

Sobrescrevendo a configuracao por chamada

from django_email_sender import ConfiguracaoSMTP, enviar_email

cfg = ConfiguracaoSMTP(
    servidor="smtp.gmail.com",
    porta=587,
    usar_ssl=False,
    usuario="outro@exemplo.com",
    senha="senha-de-app",
)

enviar_email(
    destinatario="cliente@exemplo.com",
    assunto="Teste",
    corpo="Mensagem usando outra conta SMTP",
    smtp_config=cfg,
)

Verificando a conexao SMTP

from django_email_sender import verificar_conexao_smtp

if verificar_conexao_smtp():
    print("SMTP OK")
else:
    print("SMTP indisponivel")

(Opcional) Endpoint REST

Se voce ja usa Django REST Framework, pode plugar a URL pronta no seu projeto:

# urls.py do projeto
from django.urls import include, path

urlpatterns = [
    # ...
    path("emails/", include("django_email_sender.urls")),
]

E ja tera disponivel:

POST /emails/enviar/

{
  "destinatario": "cliente@exemplo.com",
  "assunto": "Assunto",
  "corpo": "Texto do email",
  "anexoPath": "/caminho/local/arquivo.pdf",
  "anexoUrl":  "https://exemplo.com/arquivo.pdf"
}

Resposta de sucesso:

{
  "success": true,
  "destinatario": "cliente@exemplo.com",
  "assunto": "Assunto",
  "status": "ENVIADO"
}

Se voce nao usa DRF, basta nao incluir a URL. A funcao enviar_email continua funcionando normalmente, ela nao depende de DRF.


API publica

Tudo importavel direto do pacote django_email_sender:

from django_email_sender import (
    enviar_email,
    verificar_conexao_smtp,
    ConfiguracaoSMTP,
    carregar_configuracao_smtp,
)
Item Descricao
enviar_email(...) Envia um e-mail (texto + HTML), opcionalmente com anexo
verificar_conexao_smtp(...) Testa se o SMTP responde com as credenciais atuais
ConfiguracaoSMTP Dataclass para criar configuracoes SMTP customizadas
carregar_configuracao_smtp Le as variaveis do .env e devolve um ConfiguracaoSMTP

Variaveis de ambiente

Variavel Padrao Descricao
SMTP_SERVIDOR smtp.zoho.com Host do servidor SMTP
SMTP_PORTA 465 Porta SMTP
SMTP_USAR_SSL True True = SSL direto; False = STARTTLS
EMAIL_USUARIO (obrigatorio) E-mail remetente / usuario do SMTP
EMAIL_SENHA (obrigatorio) Senha de app do remetente
EMAIL_RODAPE_HTML Enviado via django-email-sender Texto do rodape HTML acrescentado ao corpo

Licenca

MIT — veja LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

send_email_dev-0.1.1.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

send_email_dev-0.1.1-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file send_email_dev-0.1.1.tar.gz.

File metadata

  • Download URL: send_email_dev-0.1.1.tar.gz
  • Upload date:
  • Size: 11.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for send_email_dev-0.1.1.tar.gz
Algorithm Hash digest
SHA256 03ebe4034a15d77f2be2ca443fc79961c236dcb80d89468e934812b2f9859405
MD5 6885d06283d8317a25843012892a22fd
BLAKE2b-256 aa636fc17a8f1ecb3e3dcba788ff311bbe563425b9748966a79449bbb9679b34

See more details on using hashes here.

File details

Details for the file send_email_dev-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: send_email_dev-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for send_email_dev-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f831d4a972de97657c1969977e4860383228830fd7019b2d1d1629b235734254
MD5 475473b8c97bf5f052ed804c3ec03f8d
BLAKE2b-256 31c37bd5800989fc8e88863ad309a8688e899add1c36697984fa558d6ba2c1ca

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page