使用金字塔发送从POST请求上载的文件的电子邮件

2024-04-19 10:06:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Angular应用程序,通过POST将文件上载到由Pyramid/Python处理的端点:

@Component({
   selector: 'app-application',
   templateUrl: 'app.application.html'
   })
export class ApplicationComponent {
   public uploader: FileUploader = new FileUploader({
   url: MyEndPoint
   });

还有我的金字塔服务器:

^{pr2}$

当我尝试将上载的文件附加到电子邮件时,WebKitFormBoundary标记被附加到文件的页眉和页脚,并且内容以字节码返回。如何通过金字塔服务器将实际上载的文件附加到电子邮件地址?在


Tags: 文件服务器pyramidapp应用程序applicationhtmlexport
1条回答
网友
1楼 · 发布于 2024-04-19 10:06:53

听起来好像是在将POST请求的实际主体附加到文件本身,这就是为什么WebKitFormBoundary标记出现在文件中的原因。在

所以首先你需要访问你想要的特定内容,它存储在一个MultiDict对象中,可以像普通字典一样访问。在

然后我将把这些内容写在某个地方,比如您的/tmp/目录,特别是如果您是一个UNIX用户。然后从这个文件路径,将电子邮件附加到金字塔邮件。在

if request.POST:

    new_file = request.POST['uploadFile'].filename
    input_file = request.POST['uploadFile'].file
    file_path = os.path.join('/tmp', '%s.doc' % uuid.uuid4())
    temp_file_path = file_path + '~'


    input_file.seek(0)
    with open(temp_file_path, 'wb') as output_file:
        shutil.copyfileobj(input_file, output_file)

    os.rename(temp_file_path, file_path)
    data = open(file_path, 'rb').read()
    mr_mime = mimetypes.guess_type(file_path)[0]

    attachment = Attachment(new_file, mr_mime, data)
    message.attach(attachment)
    mailer.send_immediately(message, fail_silently=True)

希望这有帮助!在

相关问题 更多 >