2015-10-08 2 views
1

Есть настройки SMTP Sendgrid в моем файле settings.py для целей пользователя уведомления:Email Джанго ошибка сервера из различных SMTP-сервера

EMAIL_HOST = 'smtp.sendgrid.net' 
EMAIL_PORT = 587 
EMAIL_HOST_USER = 'my_username' 
EMAIL_HOST_PASSWORD = 'my_password' 
EMAIL_USE_TLS = True 
DEFAULT_FROM_EMAIL = 'my_from_email' 

Он работает хорошо, но проблема в том, что я хочу использовать другой SMTP сервер для встроенной системы уведомлений о внутренних серверах, которая автоматически включается, когда DEBUG = False и ADMINS кортеж не пуст.

Как это можно достичь?

Заранее спасибо

ответ

2

Вы можете установить различные error handler о настройках:

'handlers': { 
    'null': { 
     'level': 'DEBUG', 
     'class': 'logging.NullHandler', 
    }, 
    'console': { 
     'level': 'DEBUG', 
     'class': 'logging.StreamHandler', 
     'formatter': 'simple' 
    }, 
    'mail_admins': { 
     'level': 'ERROR', 
     'class': 'myAdminEmailHandler', 
     'filters': ['special'] 
    } 

И перезаписать соединение есть:

from django.utils.log import AdminEmailHandler 
from django.core.mail import get_connection 


class myAdminEmailHandler(AdminEmailHandler): 

    def __init__(self, include_html=False, email_backend=None): 
     AdminEmailHandler.__init__(self,include_html, email_backend) 

     self.my_host = '' 
     self.my_port = 587 
     self.my_username = '' 
     self.my_password = '' 
     self.my_use_tls = True 
     self.connection = get_connection(host=my_host, 
            port=my_port, 
            username=my_username, 
            password=my_password, 
            use_tls=my_use_tls) 

Отказ от ответственности, не тестируются. Некоторые кредиты @ Daniel Backman: https://stackoverflow.com/a/14398138

Смежные вопросы