Senden Mailgun Inline-Bilder in HTML mit Hilfe von Python-Requests-Bibliothek

Ich habe ein Problem, wie kann ich senden mehrere inline-Nachrichten mithilfe der Mailgun-api, aus einer Python-Anwendung mit den Anforderungen der Bibliothek. Derzeit habe ich (mit jinja2 Vorlagen und Kolben als webframework, gehostet auf 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

Sodass die E-Mail sendet, in Ordnung, aber es werden keine Bilder in der E-Mail am Ende. Wenn ich auf download Sie, Sie nicht zeigen. Die Bilder sind auf die in der HTML-als pro die mailgun-api (vereinfacht natürlich!);

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

Klar bin ich etwas falsch, aber ich versuchte, befestigen Sie diese mit Hilfe der Anforderungen.Dateien-Objekt, das gar nicht senden Sie die E-Mail und gab keine Fehlermeldung, also gehe ich davon aus, dass das nicht die richtige Art und Weise an alle.

Leider ist die Dokumentation auf dieser ist eher spärlich.

Wäre es besser, den HTML-Code direkt Punkt der server-Seite die Bilder? Dies ist jedoch nicht ideal, wie server-side-Bilder im Allgemeinen nicht statisch sein (einige schon, einige nicht).

Schreibe einen Kommentar