FileNotFoundError: [Ошибка 2] В Django нет такого файла или каталога

#python #django #sendmail #email-attachments #filenotfoundexception

#питон #джанго #отправить по почте #электронная почта-вложения #исключение filenotfoundexception

Вопрос:

Я работаю над проектом 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   

Это мое setting.py:

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

Это моя структура проекта:

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

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

Ответ №1:

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

 from emailsender.settings import BASE_DIR ... msg.attach_file(os.path.join(BASE_DIR, 'static', 'file.file')) msg.send()