2016-05-26 8 views
0

Ich habe eine Django-Projekt-Setup, ich versuche, eine URL mit Python Urllib-Modul, indem Sie eine Anfrage zu holen. Es holt den kompletten HTML von dieser Seite und ich übergebe diesen HTML mit smtp Modul, um E-Mail zu senden.Wie kann ich eine Python-Django-Projekt-URL lesen und vollständige Webseite in E-Mail mit seiner CSS und Javascript arbeiten

Jetzt wird diese Webseite im E-Mail-Text angezeigt, aber das CSS und Javascript funktionierten nicht wie erwartet, daher wurden nur einige Teile der Webseite im E-Mail-Text angezeigt (nur die grundlegenden HTML-Seiten). Was kann ich tun, damit die komplette Webseite in der E-Mail angezeigt wird, so wie sie in einem Webbrowser angezeigt wird?

+3

Kurze Antwort: Sie können nicht. Webseiten sollen in Browsern angezeigt werden und Sie können sie nicht einfach in eine E-Mail kopieren. Es wird einfach nicht funktionieren. Kein E-Mail-Client wird Skripts parsen, und nur wenige werden externe CSS analysieren. Ganz zu schweigen davon, dass viele Websites relative Pfade für Assets wie Bilder verwenden und diese vollständig außerhalb des Kontextes der Website liegen würden. – solarissmoke

Antwort

2

Aufgrund der Beschränkungen und der Variabilität, mit der E-Mail-Clients HTML rendern, ist es nicht möglich, HTML von Webseiten direkt in E-Mails anzuzeigen. Wenn die Webseiten, über die Sie sprechen, für die Arbeit mit E-Mail-Clients entwickelt wurden, können Sie eine Bibliothek wie premailer verwenden, um Links und Inline-Stylesheets zu verabsolutieren.

Wenn die Web-Seiten haben nicht für E-Mail-Clients entwickelt, könnten Sie eine Bibliothek wie pdfkit verwenden HTML in PDF zu konvertieren:

import pdfkit 
pdfkit.from_url('http://google.com', 'out.pdf') 

dann die generierten PDF-Datei an die E-Mail anhängen. Natürlich erlaubt dies niemandem, mit den Webseiten zu interagieren.