Django ошибка повышения send_mail "код" ascii "c не может кодировать символы" - PullRequest
1 голос
/ 01 апреля 2020

Создано веб-приложение с Django и одной из функций является отправка уведомлений по электронной почте людям, прошедшим тест. Так в моем файле settings.py

      EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
      EMAIL_HOST = 'smtp.gmail.com'
      EMAIL_PORT = '587'
      EMAIL_HOST_USER = 'did****@gmail.com'
      DEFAULT_FROM_EMAIL = 'did****gmail.com'
      EMAIL_HOST_PASSWORD = '*************'
      EMAIL_USE_TLS = True

Здесь, в моем views.py, я есть способ отправки уведомлений по электронной почте

    def recrutesdetails(request, id, Pid): ...


        if request.method == "POST":
             sith.resrutesShadowing.add(recruter)
             sith.save()
             message = 'duck'
             subject = 'duck'
             safe_str = smart_str(message)
             safe_sub = smart_str(subject) 
             recipientlist = smart_str(recruter.planetRecruteEmail)
             send_mail(safe_sub, safe_str, from_email = smart_str(settings.DEFAULT_FROM_EMAIL),recipient_list=[recipientlist,] , fail_silently=False)
             return HttpResponseRedirect(reverse( 'recruters', args=[Pid]))

        return render(request,'app/recrutdetail.html', {'recruter': recruter, 'recrList': recrList, 
    'wrongList': wrongList});

Я пытался кодировать сообщения и адреса электронной почты с помощью:

message.encode("ascii", errors="ignore")
message.encode('utf-8')
smart_str()

Но, похоже, ничего не работает и ошибка, вызванная моим send_mail ( ) функция, которая вызывает другие функции django lib:

C:\Users\user..\__init__.py in send_mail
    return mail.send() ...

C:\Users\user...\message.py in send
        return self.get_connection(fail_silently).send_messages([self]) ...

C:\Users\user...\smtp.py in send_messages
            new_conn_created = self.open() ...

C:\Users\user...\smtp.py in open
                self.connection.starttls(keyfile=self.ssl_keyfile, certfile=self.ssl_certfile) ...

C:\Users\user...\smtplib.py in starttls
        self.ehlo_or_helo_if_needed() ...

C:\Users\user...lib\smtplib.py in ehlo_or_helo_if_needed
            if not (200 <= self.ehlo()[0] <= 299): ...

C:\Users\user..\lib\smtplib.py in ehlo
        self.putcmd(self.ehlo_msg, name or self.local_hostname) ...

C:\Users\..\Python\Python35\lib\smtplib.py in putcmd
        self.send(str) ...

, и я отслеживал ее до:

C:\Users\user\AppData\Local\Programs\Python\Python35\lib\smtplib.py in send
                        **s = s.encode(self.command_encoding)



    s   'ehlo user-ПК\r\n'   self - smtplib.SMTP object at 0x0000000005A7B128>**

Все настройки аккаунта Google для этого работали, но не могу решить эту

'ascii' codec can't 
encode characters in position 10-11: ordinal not in range(128)

ошибку.

...