2016-08-29 1 views
2

У меня есть очень простой на основе Джанго сервера я хочу использовать в качестве электронной почты посылающего сервера с mailgunmailgun послал вложения 1Kb пустые изображения

мне удалось создать сервер конечной точки, запускающие письмо с вложением, это, похоже, работает нормально, но при проверке полученного сообщения файл jpg для вложения - это всего лишь 1kb пустое изображение, im не уверен, что его проблема с 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 <[email protected]>", 
            "to": ["[email protected]"], 
            "subject": "Hello worlds", 
            "text": "testing this thing out"}) 
     resString = str(response) 
     return HttpResponse(resString) 
+2

Хотя я сомневаюсь, что это связано, вы можете попробовать открыть файл в двоичном режиме - 'открытой (,«гь»)'. Если сам файл будет искажен во время чтения, тогда полученный файл не будет действительным JPG. –

+0

@ g.d.d.c на самом деле это сделал трюк! позаботьтесь о том, чтобы опубликовать это как ваш ответ, чтобы я мог отметить его? –

+0

Несомненно. Рад, что мы нашли его для вас. :) –

ответ

1

В качестве ответа вместо комментариев - вы читаете свои файлы в текстовом режиме, а не в двоичном режиме. Это приведет к нечетным окончаниям строк или иным образом отменит ваши файлы, прежде чем отправлять их в API MailGun. Вы хотите, чтобы читать файлы в двоичном режиме, так как:

open('path/to/file', 'rb') 
Смежные вопросы