Django, ReportLab PDF-Generierung eine E-Mail angehängt
Was ist der beste Weg, um Django und ReportLab generieren PDF-Dateien, und fügen Sie Sie einer E-Mail-Nachricht?
Ich bin mit einem SimpleDocTemplate und befestigen kann die erzeugte PDF-Datei an meine HttpResponse - das ist toll, aber ich habe Schwierigkeiten, herauszufinden, wie genau hinzufügen, dass die gleiche Anlage an eine E-Mail:
# Create the HttpResponse object with the appropriate PDF headers.
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'attachment; filename=invoice.pdf'
doc = SimpleDocTemplate(response, pagesize=letter)
Document = []
... meine pdf-Datei durch anfügen von Tabellen in das Dokument...
doc.build(Document)
email = EmailMessage('Hello', 'Body', '[email protected]', ['[email protected]'])
email.attach('invoice.pdf', ???, 'application/pdf')
email.send()
Ich bin mir nur nicht sicher wie das zu übersetzen meine pdfdocument als blob so, dass die E-Mail.befestigen Sie es akzeptieren können und E-Mail.senden senden können.
Irgendwelche Ideen?
- Ich habe gesehen, ein paar andere Fragen hier auf stackoverflow Fragen eine ähnliche Frage, aber fand keine gute Antwort...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit ReportLab
Funktioniert perfekt!!
OK - habe ich es herausgefunden basierend auf der Ansetzer ein paar Dinge zusammen -
Ersten off - meine Anforderungen:
- Ich wollte nur zum erstellen der PDF-Dateien im Speicher - ich will nicht die Dateien Herumlungern, wie Sie nehmen viel Platz ein und ich will nicht, was sein könnte, sensible Daten hanging around ungeschützt auf dem server.
Also - ich habe ReportLab und Schnabeltier-Funktionalität für die Generierung von meine Dokumente. Ich habe investiert genug Zeit in jetzt, das ist es einfach. Also hier ist mein Ansatz, kann ich die DocTempates in ReportLab, erlaubt mir, auf Djangos E-Mail-Funktionen zum senden von E-Mails.
Hier ist, wie mache ich es:
Mein Problem von selbst von der generation web, um E-Mail-generation war, die richtige Objekt, die werden könnten "angehängt", um eine E-Mail. Anlegen eines Puffers, dann packte Sie die Daten aus dem Puffer hat es für mich...
Ich nicht sehen, wo Sie Ihre blob gerendert wird, also ich kann nicht beraten Sie, wie Sie es importieren. Ich habe großartige Ergebnisse mit Pisa und StringIO:
Sagte, dass, wenn Ihr PDF-Dokument existiert als unabhängige und anhaltende Dokument in Ihrem Dateisystem zu verwenden, könntest du nicht einfach: