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.