No meu settings.py
, eu tenho o seguinte:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# Host for sending e-mail.
EMAIL_HOST = 'localhost'
# Port for sending e-mail.
EMAIL_PORT = 1025
# Optional SMTP authentication information for EMAIL_HOST.
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False
Meu código de email:
from django.core.mail import EmailMessage
email = EmailMessage('Hello', 'World', to=['[email protected]'])
email.send()
Obviamente, se eu configurar um servidor de depuração via python -m smtpd -n -c DebuggingServer localhost:1025
, posso ver o email no meu terminal.
No entanto, como realmente envio o email não para o servidor de depuração, mas para [email protected]?
Depois de ler suas respostas, deixe-me esclarecer uma coisa:
Você não pode usar o localhost (simples ubuntu pc) para enviar e-mails?
Eu pensei que no django 1.3
send_mail()
é um pouco obsoleto eEmailMessage.send()
é usado em vez disso?
Respostas:
Envie o email para um servidor SMTP real. Se você não deseja configurar por conta própria, pode encontrar empresas que administrarão uma para você, como o próprio Google.
fonte
Eu uso o Gmail como meu servidor SMTP para o Django. Muito mais fácil do que lidar com o postfix ou qualquer outro servidor. Não estou no negócio de gerenciar servidores de email.
Em settings.py:
NOTA : Em 2016, o Gmail não permite mais isso por padrão. Você pode usar um serviço externo como o Sendgrid ou pode seguir este tutorial do Google para reduzir a segurança, mas permitir esta opção: https://support.google.com/accounts/answer/6010255
fonte
django-admin.py startproject gmail
Edite settings.py com o código abaixo:
Execute o modo interativo:
python manage.py shell
Importe o módulo EmailMessage:
Envie o email:
Para mais informações, verifique
send_mail
eEmailMessage
recursos nos documentos .ATUALIZAÇÃO para Gmail
Além disso, se você tiver problemas para enviar e-mail via gmail, lembre-se de verificar os guias no google.
Nas configurações da sua conta do Google, acesse
Security > Account permissions > Access for less secure apps
e ative esta opção.Crie também uma senha específica do aplicativo para o seu gmail após ativar a verificação em duas etapas .
Em seguida, você deve usar a senha específica do aplicativo nas configurações. Então mude a seguinte linha:
Além disso, se você estiver interessado em enviar email em HTML, verifique isso .
fonte
Meu site está hospedado
Godaddy
e eu tenho um email particular registrado no mesmo. Estas são as configurações que funcionaram para mim:Em settings.py:
Com casca:
Então recebi "1" como O / P, ou seja, Sucesso. E também recebi o correio. :)
fonte
Para o Django versão 1.7, se as soluções acima não funcionarem, tente o seguinte
em settings.py add
A última linha fez o truque para o django 1.7
fonte
Você precisa usar o smtp como back-end em settings.py
Se você usar o back-end como console, receberá saída no console
E também abaixo das configurações, além
Se você estiver usando o gmail , configure a verificação em duas etapas e a senha específica do aplicativo e copie e cole essa senha acima do valor EMAIL_HOST_PASSWORD.
fonte
Eu achei que o SendGrid era a maneira mais fácil de configurar o envio de email com o Django. Veja como funciona:
settings.py
:EMAIL_HOST = 'smtp.sendgrid.net' EMAIL_HOST_USER = '<your sendgrid username>' EMAIL_HOST_PASSWORD = '<your sendgrid password>' EMAIL_PORT = 587 EMAIL_USE_TLS = True
E está tudo pronto!
Para enviar email:
Se você deseja que o Django lhe envie um e-mail sempre que houver um erro interno de 500 servidores, adicione o seguinte ao seu
settings.py
:O envio de e-mail com o SendGrid é gratuito até 12 mil e-mails por mês.
fonte
Eu já havia feito isso no Django há um tempo. Abra uma conta legítima do GMail e insira as credenciais aqui. Aqui está o meu código -
fonte
smtplib
diretamente; O Django cuidará dessa parte para você.send_mail
send_mail()
é como você faria isso. Você ainda precisa montar a mensagem, mas não precisa se preocupar com os bits SMTP.Tarde, mas:
Além da
DEFAULT_FROM_EMAIL
correção que outras pessoas mencionaram, e permitindo que aplicativos menos seguros acessem a conta, tive que navegar para https://accounts.google.com/DisplayUnlockCaptcha enquanto estava conectado como a conta em questão para que o Django finalmente se autenticasse. .Eu fui a esse URL através de um túnel SSH para o servidor da Web para garantir que o endereço IP fosse o mesmo; Não tenho muita certeza se isso é necessário, mas não pode doer. Você pode fazer isso da seguinte maneira:
ssh -D 8080 -fN <username>@<host>
e defina seu navegador da Web para usarlocalhost:8080
como um proxy SOCKS.fonte
Você pode usar o "Test Mail Server Tool" para testar o envio de email em sua máquina ou host local. Google e faça o download "Test Mail Server Tool" e configure-o.
Em seguida, em seu settings.py:
Do shell:
fonte
Para SendGrid - Django Especificamente:
SendGrid Django Docs aqui
Defina essas variáveis em
settings.py
em views.py
fonte