Django Email - [Errno 2] Нет такого файла или каталога - PullRequest
0 голосов
/ 29 марта 2020

Я хочу разрешить пользователю загружать и отправлять документ по электронной почте из моего приложения django. Когда я go отправляю электронное письмо, я получаю сообщение об ошибке "[Errno 2] Нет такого файла или каталога:".

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

def email(request):
    if request.method == "POST":
        form = EmailForm(request.POST,request.FILES)
        if form.is_valid():
            post = form.save(commit=False)
          # post.published_date = timezone.now()
            post.save()
            email = request.POST.get('email')
            subject = request.POST.get('subject')
            message = request.POST.get('message')
            document = request.FILES.get('document')
            email_from = settings.EMAIL_HOST_USER
            recipient_list = [email]
            email = EmailMessage(subject,message,email_from,recipient_list)
            base_dir = 'media'
            email.attach_file('Desktop/WBU2/Poseidon/media/media/'+str(document))
            #also tried email.attach_file('/media/'+str(document))
            email.send()
    else:
        form = EmailForm()
        return render(request, 'docemail.html', {'form': form})

models.py

class Mails(models.Model):
    email = models.EmailField()
    subject = models.CharField(max_length=1000)
    message = models.CharField(max_length=20000)
    document = models.FileField(upload_to='media')
    def __str__(self):
        return self.email

1 Ответ

0 голосов
/ 29 марта 2020

Вы можете использовать абсолютный путь с "/" в начале строки. Например:

path = '/Users/xxx/Desktop/WBU2/Poseidon/media/media/'+str(document)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...