Cette question a quelques éléments here, mais pas de réponse finale.Django - Joindre PDF généré par une vue à un e-mail
Il est vue de générer un fichier PDF avec easy_pdf
from easy_pdf.views import PDFTemplateResponseMixin
class PostPDFDetailView(PDFTemplateResponseMixin,DetailView):
model = models.Post
template_name = 'post/post_pdf.html'
Ensuite, je veux joindre ce produit PDF à l'adresse électronique suivante:
@receiver(post_save, sender=Post)
def first_mail(sender, instance, **kwargs):
if kwargs['created']:
user_email = instance.client.email
subject, from_email, to = 'New account', '[email protected]', user_email
post_id = str(instance.id)
domain = Site.objects.get_current().domain
post_pdf = domain + '/post/' + post_id + '.pdf'
text_content = render_to_string('post/mail_post.txt')
html_content = render_to_string('post/mail_post.html')
# create the email, and attach the HTML version as well.
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
msg.attach_alternative(html_content, "text/html")
msg.attach_file(post_pdf, 'application/pdf')
msg.send()
J'ai aussi essayé celui-ci:
msg.attach_file(domain + '/post/' + post_id + '.pdf', 'application/pdf')
Je pense que le problème vient du fait que le PDF est généré lorsque la vue est demandée, il ne peut donc pas être joint à l'e-mail. Qu'est ce que tu penses de ça? –
Je n'ai pas eu de problème en utilisant le lien lorsque le fichier n'est pas créé ... Cela vaut la peine d'essayer. En supposant que le fichier est toujours ouvert et en cache lorsqu'il essaie de le joindre à l'e-mail. Pouvez-vous partager vos erreurs? – Doug
En utilisant easy_pdf, le fichier PDF n'est pas enregistré quelque part. C'est seulement généré. Donc le fichier report.pdf n'existe pas. –