Wysyłanie obrazów wbudowanych MailGun w HTML za pomocą biblioteki Python Requests

Mam problem z ustaleniem, w jaki sposób mogę wysyłać wiele wiadomości wbudowanych za pomocą api Mailgun z aplikacji Pythona korzystającej z biblioteki żądań. Obecnie mam (używając jinja2 do szablonów i kolby jako szkieletu strony internetowej, hostowanego na Heroku):

def EmailFunction(UserEmail):
    Sender = '[email protected]'
    Subject = 'Hello World'
    Text = ''
    name = re.sub('@.*','',UserEmail)
    html = render_template('GenericEmail.html', name=name)
    images = []
    imageloc = os.path.join(dirname, 'static')
    images.append(open(os.path.join(imageloc,'img1.jpg')))
    images.append(open(os.path.join(imageloc,'img2.jpg')))
    send_mail(UserEmail,Sender,Subject,Text,html,images)
    return html

def send_mail(to_address, from_address, subject, plaintext, html, images):
    r = requests.\
        post("https://api.mailgun.net/v2/%s/messages" % app.config['MAILGUN_DOMAIN'],
            auth=("api", app.config['MAILGUN_KEY']),
             data={
                 "from": from_address,
                 "to": to_address,
                 "subject": subject,
                 "text": plaintext,
                 "html": html,
                 "inline": images
             }
         )
    return r

Więc e-mail wysyła dobrze, ale na końcu nie ma zdjęć w e-mailu. Kiedy klikam, aby je pobrać, nie wyświetlają się. Obrazy są przywoływane w kodzie HTML zgodnie z api mailgun (oczywiście uproszczone!);

<img src="cid:img1.jpg"/>
<img src="cid:img2.jpg"/>
etc ...

Najwyraźniej robię coś złego, jednak próbowałem dołączyć je za pomocą obiektu requests.files, który nawet nie wysłał e-maila i nie dał żadnego błędu, więc zakładam, że nie jest to właściwy sposób.

Niestety dokumentacja na ten temat jest raczej skąpa.

Czy lepiej byłoby, gdyby kod HTML bezpośrednio wskazywał obrazy po stronie serwera? Jednak nie jest to idealne rozwiązanie, ponieważ obrazy po stronie serwera na ogół nie będą statyczne (niektóre będą, niektóre nie).

questionAnswers(1)

yourAnswerToTheQuestion