Создано веб-приложение с 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)
ошибку.