2009-03-03 22 views
12

Estoy utilizando el servidor SMTP de Gmail para enviar correos electrónicos de los usuarios de mi sitio web.Django correo electrónico

Estos son los ajustes por defecto en mi settings.py

EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'pwd' 
EMAIL_PORT = 587 
EMAIL_USE_TLS = True 
SERVER_EMAIL = EMAIL_HOST_USER 
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER 

Si quiero un usuario enviar un correo electrónico, estoy preponderantes con estos ajustes y el envío del correo electrónico utilizando el correo electrónico de Django métodos de envío. Cuando se produce una excepción en el sistema, recibo un correo electrónico de [email protected] A veces recibo un correo electrónico de algún usuario conectado. Lo que también podría significar que cuando un usuario recibe un correo electrónico enviado desde mi sitio web tiene una dirección enviada diferente del usuario real.

¿Qué se debe hacer para evitar esta situación?

Respuesta

22

Django sólo utiliza settings.DEFAULT_FROM_EMAIL cuando cualquiera de las funciones de envío de correo pasan None o cadena vacía como la dirección del remitente . Esto se puede verificar en django/core/mail.py.

Cuando hay una excepción no controlada Django llama a la función mail_admins() en django/core/mail.py que siempre utiliza settings.SERVER_EMAIL y es única enviados a direcciones que figuran en settings.ADMINS. Esto también se puede verificar en django/core/mail.py.

El único otro lugar en sí Django envía correos electrónicos es si settings.SEND_BROKEN_LINK_EMAILS es cierto, entonces CommonMiddleware se envía un mensaje a todas las direcciones que figuran en settings.MANAGERS y el remitente del correo electrónico es settings.SERVER_EMAIL.

Por lo tanto, la única vez que un usuario regular recibirá un correo electrónico de su sitio es cuando llame al send_mail(). Por lo tanto, siempre pase una dirección real como el argumento from_mail y evitará que los usuarios reciban correos electrónicos de las configuraciones .SERVER_EMAIL o configuraciones.DEFAULT_FROM_EMAIL.

Nota al margen: django-registro es al menos un ejemplo de un acoplamiento activo Django que enviará el correo de settings.DEFAULT_FROM_EMAIL por lo que en casos como éste necesita para asegurarse de que es una dirección de correo electrónico correcta como el apoyo @ yoursite.com o [email protected]

+0

Gracias por la ayuda. –

Cuestiones relacionadas