Я не могу отправить письмо с django - PullRequest
0 голосов
/ 27 мая 2020

Добрый день,

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

EMAIL_BACKEND = "django.core.mail.backends.smtp.emailBackend"

EMAIL_USE_TLS = True

EMAIL_PORT = 587

EMAIL_HOST_UNSER = "myemail@gmail.com"
EMAIL_HOST_PASSWORD = "Password"

, а в оболочке я делаю

from django.core.mail import send_mail
send_mail('Asunto', 'Mensaje', 'myemail@gmail.com', 'testemail@outlook.com', fail_silently=False, )

, и он идет с этой ошибкой

Traceback (most recent call last):
  File "C:\Users\….\Python\Python38-32\lib\site-packages\django\utils\module_loading.py", line 20, in import_string
    return getattr(module, class_name)
AttributeError: module 'django.core.mail.backends.smtp' has no attribute 'emailBackend'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Users\...\Python\Python38-32\lib\site-packages\django\core\mail\__init__.py", line 51, in send_mail
    connection = connection or get_connection(
  File "C:\Users\….\Python\Python38-32\lib\site-packages\django\core\mail\__init__.py", line 34, in get_connection      
    klass = import_string(backend or settings.EMAIL_BACKEND)
  File "C:\Users\...\Programs\Python\Python38-32\lib\site-packages\django\utils\module_loading.py", line 22, in import_string     
    raise ImportError('Module "%s" does not define a "%s" attribute/class' % (
ImportError: Module "django.core.mail.backends.smtp" does not define a "emailBackend" attribute/class

Я не совсем уверен, почему возникает эта ошибка, я изменил настройки безопасности в своем электронном письме. и я следую инструкциям из руководств, и я не уверен в своей ошибке.

СПАСИБО :):)

Ответы [ 4 ]

1 голос
/ 27 мая 2020

Вы получаете эту ошибку, потому что неправильно написали emailBackend,

Это EmailBackend

Здесь ссылка на github.

0 голосов
/ 27 мая 2020

Я добавил кортеж при попытке отправить электронное письмо, и это вызвало другую ошибку.

from django.core.mail import send_mail
send_mail('Asuntillo', 'Mensajillo', 'myemail@gmail.com', ('testemail@outlook.com', ), fail_silently=False, )

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Users\...\Python\Python38-32\lib\site-packages\django\core\mail\__init__.py", line 60, in send_mail
    return mail.send()
  File "C:\Users\...\Python\Python38-32\lib\site-packages\django\core\mail\message.py", line 276, in send     
    return self.get_connection(fail_silently).send_messages([self])
  File "C:\Users\...\Programs\Python\Python38-32\lib\site-packages\django\core\mail\backends\smtp.py", line 102, in send_messages 
    new_conn_created = self.open()
  File "C:\Users\...\Programs\Python\Python38-32\lib\site-packages\django\core\mail\backends\smtp.py", line 62, in open
    self.connection = self.connection_class(self.host, self.port, **connection_params)
  File "C:\Users\...\Programs\Python\Python38-32\lib\smtplib.py", line 253, in __init__
    (code, msg) = self.connect(host, port)
  File "C:\Users\…\Programs\Python\Python38-32\lib\smtplib.py", line 339, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "C:\Users\...\Programs\Python\Python38-32\lib\smtplib.py", line 308, in _get_socket
    return socket.create_connection((host, port), timeout,
  File "C:\Users\...\Programs\Python\Python38-32\lib\socket.py", line 808, in create_connection
    raise err
  File "C:\Users\...\Programs\Python\Python38-32\lib\socket.py", line 796, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

Я все еще учусь и не могу понять, что делаю неправильно.

Еще раз большое спасибо всем!

0 голосов
/ 27 мая 2020

В сообщении говорится, что аргумент to должен быть либо списком, либо кортежем, поэтому он должен использовать либо скругленную скобку (в случае кортежа), либо квадратную скобку (в случае списка):

Ниже приведен пример использования кортежа ...

>>> from django.core.mail import send_mail

>>> send_mail('Asunto', 'Mensaje', 'myemail@gmail.com', '(testemail@outlook.com',), fail_silently=False, )
0 голосов
/ 27 мая 2020

У меня есть изменение emailBackend на EmailBackend, и это связано с другой ошибкой

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Users\...\Python\Python38-32\lib\site-packages\django\core\mail\__init__.py", line 56, in send_mail
    mail = EmailMultiAlternatives(subject, message, from_email, recipient_list, connection=connection)
  File "C:\Users\...\Python\Python38-32\lib\site-packages\django\core\mail\message.py", line 415, in __init__ 
    super().__init__(
  File "C:\Users\...\Python\Python38-32\lib\site-packages\django\core\mail\message.py", line 195, in __init__
    raise TypeError('"to" argument must be a list or tuple')
TypeError: "to" argument must be a list or tuple

Я просто не уверен, как продолжить, поскольку из всех мест, где я проверял, это должно работать.

Большое спасибо!

...