FileNotFoundError: [Errno 2] Нет такого файла или каталога в Django

Я работаю над проектом Django, где мне нужно отправить файл клиенту через мою систему по электронной почте. Но когда я помещаю имя файла в поле attach_file(), я получаю ошибку о том, что файл не найден. Вот мой код:

def email_sender(request):
    if request.method == "GET":
        subject = 'welcome to GFG world'
        email_from = settings.EMAIL_HOST_USER
        recipient_list = ["example@gmail.com", ]

        to = 'example@gmail.com'
        text_content = 'This is an important message.'
        msg = EmailMultiAlternatives(subject, text_content, email_from, [to])
        msg.attach_file('file.file')
        msg.send()

А это мое исключение:

FileNotFoundError: [Errno 2] No such file or directory: 'file.file'
[08/Dec/2021 11:52:52] "GET /email/send/ HTTP/1.1" 500 83111

Это мой set.py:

...
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
...

Вот структура моего проекта:

src
   \_emailsender
               \_ urls.py
               \_ views.py
               \_ setting.py
   \_ static
            \_ file.file

Спасибо за помощь.

Метод attach_file не имеет функции поиска, если вы используете относительный путь, вам нужно знать о CWD процесса Django, который, вероятно, не является статическим dir. Вы можете попробовать static/file.file, но я рекомендую использовать абсолютный путь.

from emailsender.settings import BASE_DIR
...
msg.attach_file(os.path.join(BASE_DIR, 'static', 'file.file'))
msg.send()
Вернуться на верх