Python mailgun发送的附件是1kb的空白图像

Python mailgun发送的附件是1kb的空白图像,python,django,mailgun,Python,Django,Mailgun,我有一个非常简单的基于django的服务器,我想用它作为mailgun的电子邮件发送服务器 我已经设法创建了一个服务器端点来触发带有附件的电子邮件,这似乎工作正常,但是当检查收到的电子邮件时,附件jpg文件只是一个1kb的空白图像,我不确定这是django问题、mailgun问题还是沙箱域的问题 以下是我的代码,包括导入: from django.shortcuts import render from django.http import HttpResponse from rest_fram

我有一个非常简单的基于django的服务器,我想用它作为mailgun的电子邮件发送服务器

我已经设法创建了一个服务器端点来触发带有附件的电子邮件,这似乎工作正常,但是当检查收到的电子邮件时,附件jpg文件只是一个1kb的空白图像,我不确定这是django问题、mailgun问题还是沙箱域的问题

以下是我的代码,包括导入:

from django.shortcuts import render
from django.http import HttpResponse
from rest_framework import generics
import requests

class Email(generics.GenericAPIView):
    def post(self, req, *args, **kwargs):
        response =  requests.post("https://api.mailgun.net/v3/sandbox....mailgun.org/messages",
                            auth=("api", "<API_KEY>"),
                            files=[("attachment", open("files/test.jpg"))],
                            data={"from": "Dummy user <mg.mymail@gmail.com>",
                                  "to": ["mymail@gmail.com"],
                                  "subject": "Hello worlds",
                                  "text": "testing this thing out"})
        resString = str(response)
        return HttpResponse(resString)
从django.exe导入渲染
从django.http导入HttpResponse
从rest_框架导入泛型
导入请求
类电子邮件(generics.GenericAPIView):
def post(自我、需求、*args、**kwargs):
响应=请求。发布(“https://api.mailgun.net/v3/sandbox....mailgun.org/messages",
auth=(“api”和“),
files=[(“附件”,打开(“files/test.jpg”)],
数据={“来自”:“虚拟用户”,
“致”:[”mymail@gmail.com"],
“主题”:“你好,世界”,
“文本”:“测试这个东西”})
resString=str(响应)
返回HttpResponse(resString)

作为答案而不是在注释中-您正在以文本模式而不是二进制模式读取文件。这将引入奇怪的行尾,或者在您将文件提交到MailGun的API之前将其损坏。您希望以二进制模式读取文件,如下所示:

open('path/to/file', 'rb')

虽然我怀疑它是否相关,但您可以尝试以二进制模式打开文件-
open(,'rb')
。如果文件本身在读取过程中被损坏,那么接收到的文件将不是有效的JPG。@g.d.d.c实际上就是这样!想把这个作为你的答案贴出来吗?好的。很高兴我们为您找到了它。:)