【问题标题】:Django Email - [Errno 2] No such file or directoryDjango 电子邮件 - [Errno 2] 没有这样的文件或目录
【发布时间】:2020-07-09 21:47:50
【问题描述】:

我希望允许用户从我的 django 应用程序通过电子邮件上传和发送文档。当我去发送电子邮件时,我收到错误“[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

【问题讨论】:

    标签: python django


    【解决方案1】:

    您可以在行首使用带有“/”的绝对路径。 例如:

    path = '/Users/xxx/Desktop/WBU2/Poseidon/media/media/'+str(document)
    

    【讨论】:

    • ...除了在代码中添加绝对路径没有多大意义。它将代码耦合到当前机器。 OP,你为什么首先尝试从文件系统上的任意路径打开文件?
    • 我不是一定要使用绝对路径...我试图让应用程序发送带有附件的电子邮件。因此,当用户选择他们的文件时,它会上传到 /media 文件夹,然后从那里将该文件附加到电子邮件中。但是当我使用不起作用的“媒体”时。
    • 感谢您的回复,但即使定义了绝对路径仍然没有运气。
    • 在 email.send() 之前的代码中制作 print(path) 并检查此路径是否存在文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 2019-11-20
    • 2015-11-19
    • 2013-03-21
    • 2015-04-09
    • 2019-05-26
    相关资源
    最近更新 更多