Электронная почта отправляет django сообщение об ошибке, когда данные поступают из базы данных - PullRequest
0 голосов
/ 04 марта 2020

У меня есть ФУНКЦИЯ ОТПРАВИТЬ ПОЧТУ в django вспомогательный файл, моя функция дана ниже

def mail_send(data):
    result = {}
    getTemplate = EmailTemplate.objects.filter(pk=data['type']).first()
    if getTemplate != None:
        templates = Template(getTemplate.template)
        config = EmailConfiguration.objects.filter(pk=1).first()
        context = Context(
            {
                'name': data['name'],
                'password': data['password'],
                'site_name': config.site_name
            }
        )
        msg_plain = 'Login Details ' + data['name'] + ' / ' + data['password']
        msg_html = templates.render(context)
        EMAIL_USE_TLS = config.tls
        EMAIL_HOST = config.host
        EMAIL_HOST_USER = config.from_email
        EMAIL_HOST_PASSWORD = config.password
        EMAIL_PORT = config.port
        mail = send_mail(
                    data['msg'],
                    msg_plain,
                    EMAIL_HOST_USER,
                    [data['email']],
                    fail_silently=False,
                    html_message=msg_html,
                )
    else:
        result['msg'] = 'Template Not Found .Unable to send Email..'
        result['status'] = False

, она возвращает мне ошибку вроде: [Errno 111] Соединение отказано

, но когда я помещаю все эти настройки в settings.py, он работает нормально со мной, но я не хочу этого, я хочу прийти из базы данных и отправить письмо, пожалуйста, предложите мне, я застрял здесь с прошлого дня. Я новичок в django, так что его мне очень трудно

1 Ответ

0 голосов
/ 04 марта 2020

Это очень странная настройка и, вероятно, не лучшая практика для подражания.

Тем не менее, Django по-прежнему имеет вашу спину.

Давайте посмотрим на подпись send_mail

send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None, connection=None, html_message=None)

К сожалению, мы не можем дать это хозяину здесь , но мы можем дать ему связь.

from django.core.mail import get_connection

def mail_send(data):
    ....
    connection = get_connection(
        host=config.host,
        port=config.port,
        username=config.from_email,
        password=config.password,
        use_tls=config.tls,
    )
    mail = send_mail(
        data['msg'],
        msg_plain,
        config.from_email,
        [data['email']],
        fail_silently=False,
        html_message=msg_html,
        connection=connection,
   )
...