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.0

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.0.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.0-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: send_email_dev-0.1.0.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.0.tar.gz
Algorithm Hash digest
SHA256 4e31996e967a38a6213485c559d655da20c18ecf2f3c857510c95a305443e265
MD5 c47b4104178179f1d24ce1b199f591e6
BLAKE2b-256 6ce43a44bb85262fa869c4149627cbeb84213b01c4715143a06eec289f2d4dd9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: send_email_dev-0.1.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9c9659d19f4e87f4ef7968c48894d23a8c9b654bef2e01735ddd3e79f05ab365
MD5 0325676eab23c9df814d38532b48e8c8
BLAKE2b-256 e53390fd22a11cd7a0b32b1c4d3dcb01bbc9dec421384b49857ce99c589b0c9e

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