Quero enviar emails em HTML, usando modelos do Django como este:
<html>
<body>
hello <strong>{{username}}</strong>
your account activated.
<img src="mysite.com/logo.gif" />
</body>
Não consigo encontrar nada send_mail
e o django-mailer envia apenas modelos HTML, sem dados dinâmicos.
Como eu uso o mecanismo de modelo do Django para gerar e-mails?
django
email
django-email
django-mailer
Anakin
fonte
fonte
1.7
oferecehtml_message
nosend_email
stackoverflow.com/a/28476681/953553Respostas:
Na documentação , para enviar email em HTML, você deseja usar tipos de conteúdo alternativos, como este:
Você provavelmente desejará dois modelos para o seu e-mail - um texto simples, semelhante a este, armazenado no diretório de modelos em
email.txt
:e um HTMLy, armazenado em
email.html
:Em seguida, você pode enviar um email usando os dois modelos usando
get_template
, desta forma:fonte
plaintext
ehtmly
, e apenas definir modelos e contextos quando você definetext_content
ehtml_content
.Meninos e meninas!
Desde o método 1.7 do Django no send_email , o
html_message
parâmetro foi adicionado.Então você pode apenas:
fonte
render_to_string
dica, muito útil.send_mail
não é possível definir algum cabeçalho personalizado, como, por exemplo, oReturn-Path
que pode ser definido com oEmailMultiAlternatives's constructor header parameter
Fiz o django-modelado-email em um esforço para resolver esse problema, inspirado por esta solução (e a necessidade, em algum momento, de usar modelos de django para usar um mailchimp etc.) conjunto de modelos para emails transacionais e modelados para meu próprio projeto). Ainda é um trabalho em andamento, mas, para o exemplo acima, você faria:
Com a adição do seguinte a settings.py (para concluir o exemplo):
Isso procurará automaticamente modelos denominados 'templated_email / email.txt' e 'templated_email / email.html' para as partes simples e html, respectivamente, nos diretórios / carregadores normais do modelo django (queixa se não conseguir encontrar pelo menos um deles) .
fonte
django.shortcuts.send_templated_mail
: code.djangoproject.com/ticket/17193Use EmailMultiAlternatives e render_to_string para usar dois modelos alternativos (um em texto sem formatação e outro em html):
fonte
Criei o Django Simple Mail para ter um modelo simples, personalizável e reutilizável para cada email transacional que você gostaria de enviar.
O conteúdo e os modelos de e-mails podem ser editados diretamente do administrador do django.
Com o seu exemplo, você registraria seu email:
E envie assim:
Gostaria muito de receber algum feedback.
fonte
Há um erro no exemplo .... se você usá-lo como escrito, ocorre o seguinte erro:
Você precisará adicionar a seguinte importação:
e mude o dicionário para:
Consulte http://docs.djangoproject.com/en/1.2/ref/templates/api/#rendering-a-context
fonte
O Django Mail Templated é um aplicativo Django rico em recursos para enviar e-mails com o sistema de modelos do Django.
Instalação:
Configuração:
Modelo:
Pitão:
Mais informações: https://github.com/artemrizhov/django-mail-templated
fonte
Sei que essa é uma pergunta antiga, mas também sei que algumas pessoas são como eu e estão sempre procurando respostas atualizadas , pois as respostas antigas às vezes podem ter informações obsoletas, se não forem atualizadas.
Agora é janeiro de 2020 e estou usando o Django 2.2.6 e o Python 3.7
Nota: Eu uso o DJANGO REST FRAMEWORK , o código abaixo para enviar e-mail estava em um modelo no meu
views.py
Então, depois de ler várias respostas legais, foi isso que eu fiz.
Importante! Então, como
render_to_string
ficareceipt_email.txt
ereceipt_email.html
? No meusettings.py
, eu tenhoTEMPLATES
e abaixo é como ele se parecePreste atenção
DIRS
, existe esta linhaos.path.join(BASE_DIR, 'templates', 'email_templates')
. Esta linha é o que torna meus modelos acessíveis. No meu project_dir, tenho uma pasta chamadatemplates
e um subdiretório chamadoemail_templates
assimproject_dir->templates->email_templates
. Meus modelosreceipt_email.txt
ereceipt_email.html
estão sob oemail_templates
subdiretório.Deixe-me acrescentar que, minha
recept_email.txt
aparência fica assim;E, minha
receipt_email.html
aparência é assim;fonte
Escrevi um trecho que permite enviar e-mails renderizados com modelos armazenados no banco de dados. Um exemplo:
fonte
Se você deseja modelos de email dinâmicos para o seu email, salve o conteúdo do email nas tabelas do banco de dados. Isto é o que eu salvei como código HTML no banco de dados =
Na sua opinião:
Isso enviará ao modelo HTML dinâmico o que você salvou no banco de dados.
fonte
send_emai()
não funcionou para mim, então eu useiEmailMessage
aqui no django docs .Eu incluí duas versões do anser:
Se você deseja incluir uma versão em texto sem formatação do seu e-mail, modifique o descrito acima desta forma:
Minhas versões simples e html ficam assim: plain_version.html:
html_version.html
fonte
Gosto de usar esta ferramenta para permitir o envio fácil de emails em HTML e TXT com fácil processamento de contexto: https://github.com/divio/django-emailit
fonte