13.11. Criação de um Projeto Django: Envio de Emails

Ao construir um sistema com Python e Django, um dos recursos mais úteis que você pode implementar é a capacidade de enviar emails. Seja para notificar os usuários sobre atualizações, confirmar inscrições ou redefinir senhas, o envio de emails é uma ferramenta essencial para qualquer aplicativo da web. Neste capítulo, vamos explorar como configurar o Django para enviar emails.

Configuração do Servidor de Email

Para enviar emails com Django, você precisa de um servidor de email SMTP. O Django suporta muitos servidores de email, como Gmail, SendGrid, Amazon SES, entre outros. Para o propósito deste tutorial, vamos usar o Gmail.

Primeiro, você precisa configurar as configurações do email no seu arquivo settings.py. Aqui está um exemplo de como configurar o Gmail:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'seuemail@gmail.com'
EMAIL_HOST_PASSWORD = 'suasenha'

As configurações acima são autoexplicativas. EMAIL_HOST e EMAIL_PORT são as configurações do servidor SMTP do Gmail. EMAIL_USE_TLS é definido como True porque o Gmail usa TLS. EMAIL_HOST_USER e EMAIL_HOST_PASSWORD são o seu email e senha do Gmail, respectivamente.

Envio de Emails

Com as configurações do servidor de email configuradas, agora você pode enviar emails. Django fornece uma função chamada send_mail para enviar emails. Aqui está um exemplo de como usar a função send_mail:

from django.core.mail import send_mail

send_mail(
    'Assunto do email',
    'Corpo do email',
    'de@example.com',
    ['para@example.com'],
    fail_silently=False,
)

A função send_mail aceita cinco parâmetros. O primeiro é o assunto do email. O segundo é o corpo do email. O terceiro é o endereço de email do remetente. O quarto é uma lista de endereços de email dos destinatários. O último parâmetro, fail_silently, é um booleano. Se for definido como True, a função não lançará exceções se o email não puder ser enviado. Se for False, a função lançará exceções se o email não puder ser enviado.

Enviar Emails com HTML

Django também suporta o envio de emails com HTML. Para enviar um email com HTML, você pode usar a função EmailMessage. Aqui está um exemplo de como usar a função EmailMessage para enviar um email com HTML:

from django.core.mail import EmailMessage

email = EmailMessage(
    'Hello',
    'Body goes here',
    'from@example.com',
    ['to@example.com'],
    ['bcc@example.com'],
    reply_to=['another@example.com'],
    headers={'Message-ID': 'foo'},
)

email.send()

A função EmailMessage aceita vários parâmetros. Os primeiros quatro são os mesmos que a função send_mail. O quinto parâmetro é uma lista de endereços de email para BCC. O sexto parâmetro é uma lista de endereços de email para a resposta. O último parâmetro é um dicionário de cabeçalhos extras para o email.

Para adicionar HTML ao email, você pode usar o método content_subtype do objeto EmailMessage. Aqui está um exemplo:

email = EmailMessage('Hello', 'Body goes here', 'from@example.com', ['to@example.com'])
email.content_subtype = "html"
email.send()

Espero que este capítulo tenha dado a você uma boa compreensão de como enviar emails com Django. No próximo capítulo, vamos explorar como integrar o Django com bancos de dados.

Agora responda o exercício sobre o conteúdo:

Qual função Django é usada para enviar emails e quais são seus parâmetros?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Criação de um projeto Django: Integração com APIs

Próxima página do Ebook Gratuito:

70Criação de um projeto Django: Integração com APIs

3 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto