2012-08-28 4 views
1

J'ai quelques problèmes avec essayer d'obtenir SwiftMailer pour joindre un fichier que j'ai créé avec FPDF. Fondamentalement, j'ai une page appelée createPDF.php qui est générée dynamiquement en fonction du numéro d'identification dans l'URL. Cette page est configurée pour afficher le PDF en ligne à l'aide de $ pdf-> Output ("filename.pdf", I) ;. Ce que je veux faire est de pouvoir attacher ce fichier à un email en utilisant SwiftMailer d'une autre page simplement en appelant mon lien createPDF.php? Id = xxx.PHP Swift Mailer résoudre les problèmes FPDF

De la page PHP où je veux envoyer l'email, tout fonctionne, sauf la pièce jointe. Il attache quelque chose, mais pas ce que je veux et il n'est pas visible dans une visionneuse PDF sur ma machine locale. La ligne spécifique à la fixation du fichier:

-> attach (Swift_Attachment :: fromPath ('createPDF.php id = xxxx?))

Cela ne fonctionne pas, mais sûrement, il doit être possible sans enregistrer le fichier sur mon serveur web par FPDF.

Est-ce possible? Si c'est le cas, comment?

Merci!

Répondre

0

Ok, donc je viens de comprendre cela.

Fondamentalement, j'ai fait un nouveau fichier PHP avec la majeure partie de mon fichier createPDF.php en tant que fonction et simplement transmis deux variables dans la fonction en tant que mon $ id et une variable de sortie $. $ output est simplement la façon dont FPDF sort le fichier - inline, etc ... J'ai ensuite défini la fonction pour retourner la sortie du FPDF. Dans mon fichier createPDF.php, j'appelle simplement ma fonction en transmettant $ id et 'I' en tant que variables afin d'afficher le PDF correct dans le navigateur.

Dans ma fonction sendEmail, je passe simplement $ id et 'S' et je le mets à une variable $ content, que je passe dans SwiftMailer en pièce jointe.

Fonctionne très bien.

Merci pour votre aide!

0

Le problème ici est Swiftmailer obtient le contenu du fichier, il n'exécute pas votre fichier php. Donc le contenu de votre PDF sera le code qui est dans createPDF.php. Pourquoi ne pouvez-vous pas sécuriser le fichier en premier? Vous devriez pouvoir le sauvegarder et le supprimer quand votre email est envoyé.

<?php 
$id = "xxx"; 
$fileName = "tmp/".sha1(time()+mt_rand(0,99999999)); 
include "createPDF.php"; //saves it to $fileName 
->attach(Swift_Attachment::fromFile($fileName)->setFilename('blaha.pdf')); 
unlink($fileName); 
+0

Je ne suis pas sûr de comprendre correctement votre code. Cela ne fonctionne pas pour moi, je ne vois pas où vous spécifiez la variable $ id qui serait dans l'URL createPDF.php? Id = xxx. Si je pouvais enregistrer le fichier createPDF.php? Id = xxx temporairement ou quelque chose basé sur la variable ID, dynamiquement - l'ID devrait changer en fonction du PDF que j'ai besoin d'envoyer. Ensuite, après l'envoi de l'e-mail, supprimez ce fichier temporaire. Si je pouvais le faire, cela fonctionnerait. Notez également que j'envoie l'e-mail à partir d'un fichier différent sur mon serveur. Le sendemail.php est dans un dossier différent. Le fichier createPDF.php se trouve dans le dossier /. – shootingrubber

+0

Vous devez modifier votre fichier createPDF.php pour ne pas définir l'ID à partir de $ _GET, mais utilisez simplement $ id et assurez-vous qu'il enregistre dans $ filename. –

+0

Je l'ai fait, et cela n'a toujours pas fonctionné. J'ai plus d'erreurs dans mon code. Pourriez-vous me montrer un exemple de comment je formaterais la page createPDF.php et mon autre fonction (dans une autre page) pour envoyer l'email? Je l'ai essentiellement mis en place dans une fonction comme sendEmail() dans un autre fichier PHP. Je veux toujours pouvoir avoir createPDF.php être capable d'afficher le PDF en ligne si quelqu'un clique sur le lien de leur profil. J'ai donc: createPDF.php un autre fichier PHP avec la fonction sendEmail() {} – shootingrubber