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) usandopython-decouple - Comando de setup automatico que cria/atualiza o
.envdo 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 edjango_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_emailcontinua 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03ebe4034a15d77f2be2ca443fc79961c236dcb80d89468e934812b2f9859405
|
|
| MD5 |
6885d06283d8317a25843012892a22fd
|
|
| BLAKE2b-256 |
aa636fc17a8f1ecb3e3dcba788ff311bbe563425b9748966a79449bbb9679b34
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f831d4a972de97657c1969977e4860383228830fd7019b2d1d1629b235734254
|
|
| MD5 |
475473b8c97bf5f052ed804c3ec03f8d
|
|
| BLAKE2b-256 |
31c37bd5800989fc8e88863ad309a8688e899add1c36697984fa558d6ba2c1ca
|