En mi settings.py
, tengo lo siguiente:
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
Mi codigo de correo electronico:
from django.core.mail import EmailMessage
email = EmailMessage('Hello', 'World', to=['[email protected]'])
email.send()
Por supuesto, si configuro un servidor de depuración a través de python -m smtpd -n -c DebuggingServer localhost:1025
, puedo ver el correo electrónico en mi terminal.
Sin embargo, ¿cómo envío realmente el correo electrónico no al servidor de depuración sino a [email protected]?
Después de leer tus respuestas, déjame aclarar algo:
¿No puedes usar localhost (simple ubuntu pc) para enviar correos electrónicos?
Pensé que en django 1.3
send_mail()
está algo obsoleto yEmailMessage.send()
se usa en su lugar.
Respuestas:
Envíe el correo electrónico a un servidor SMTP real. Si no desea configurar el suyo propio, puede encontrar empresas que ejecuten uno para usted, como Google.
fuente
Yo uso Gmail como mi servidor SMTP para Django. Mucho más fácil que tratar con postfix o cualquier otro servidor. No estoy en el negocio de administrar servidores de correo electrónico.
En settings.py:
NOTA : En 2016, Gmail ya no lo permite de forma predeterminada. Puede utilizar un servicio externo como Sendgrid o puede seguir este tutorial de Google para reducir la seguridad, pero permita esta opción: https://support.google.com/accounts/answer/6010255
fuente
django-admin.py startproject gmail
Edite settings.py con el siguiente código:
Ejecute el modo interactivo:
python manage.py shell
Importe el módulo EmailMessage:
Envía el correo electrónico:
Para más información, consultar
send_mail
yEmailMessage
características en los documentos .ACTUALIZACIÓN para Gmail
Además, si tiene problemas para enviar correos electrónicos a través de gmail, recuerde consultar estas guías de google.
En la configuración de su cuenta de Google, vaya
Security > Account permissions > Access for less secure apps
y habilite esta opción.También cree una contraseña específica de la aplicación para su gmail después de haber activado la verificación en dos pasos .
Luego, debe usar una contraseña específica de la aplicación en la configuración. Entonces cambie la siguiente línea:
Además, si está interesado en enviar un correo electrónico HTML, consulte esto .
fuente
Mi sitio está alojado
Godaddy
y tengo un correo electrónico privado registrado en el mismo. Estas son las configuraciones que funcionaron para mí:En settings.py:
Con cáscara:
Luego obtuve "1" como O / P, es decir, Éxito. Y recibí el correo también. :)
fuente
Para Django versión 1.7, si las soluciones anteriores no funcionan, intente lo siguiente
en settings.py agregar
La última línea hizo el truco para django 1.7
fuente
Debe usar smtp como back-end en settings.py
Si usa el backend como consola, recibirá la salida en la consola
Y también debajo de la configuración además
Si está utilizando gmail para esto, configure la verificación en dos pasos y la contraseña específica de la aplicación y copie y pegue esa contraseña en el valor superior de EMAIL_HOST_PASSWORD.
fuente
Descubrí que usar SendGrid es la forma más fácil de configurar el envío de correo electrónico con Django. Así es 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
¡Y ya está todo listo!
Para enviar un correo electrónico:
Si desea que Django le envíe un correo electrónico cada vez que haya un error interno del servidor 500, agregue lo siguiente a su
settings.py
:Enviar correos electrónicos con SendGrid es gratis hasta 12k correos electrónicos por mes.
fuente
De hecho, había hecho esto desde Django hace un tiempo. Abra una cuenta legítima de GMail e ingrese las credenciales aquí. Aquí está mi código
fuente
smtplib
directamente; Django se encargará de esa parte por ti.send_mail
send_mail()
así es como lo harías. Todavía necesita ensamblar el mensaje usted mismo, pero no tiene que preocuparse por los bits SMTP.Tarde, pero:
Además de la
DEFAULT_FROM_EMAIL
solución que otros han mencionado, y para permitir que aplicaciones menos seguras accedan a la cuenta, tuve que navegar a https://accounts.google.com/DisplayUnlockCaptcha mientras estaba conectado como la cuenta en cuestión para que Django finalmente se autentique .Fui a esa URL a través de un túnel SSH al servidor web para asegurarme de que la dirección IP fuera la misma; No estoy totalmente seguro de si eso es necesario, pero no puede doler. Puede hacerlo así:
ssh -D 8080 -fN <username>@<host>
luego configure su navegador web para usarlolocalhost:8080
como proxy SOCKS.fuente
Puede usar la "Herramienta de prueba del servidor de correo" para probar el envío de correo electrónico en su máquina o localhost. Google y descargue "Test Mail Server Tool" y configúrelo.
Luego en su settings.py:
De la cáscara:
fuente
Para SendGrid - Django Específicamente:
SendGrid Django Docs aquí
Establecer estas variables en
settings.py
en views.py
fuente