envoyer le pdf par mail plutôt que l'afficher

Eléphant du PHP | 451 Messages

14 mai 2007, 19:19

Merci en tout cas jpaul, tu m'as bien aidé !
De rien, c'est un plaisir :)
Si le problème est réglé, penses à passer le sujet en réglé ;)
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Eléphant du PHP | 331 Messages

14 mai 2007, 21:37

Dernier truc, après c'est promis, j'arrete.

Je coince avec le nom que je veux donner dynamiquement à ma PJ :
J'ai le code suivant :
$attachement .= "------=$limite\n"; 
         $attachement .= "Content-Type: application/octet-stream; name=\"".$ChoixNumFacture.".pdf\"\n"; 
         $attachement .= "Content-Transfer-Encoding: base64\n"; 
         $attachement .= "Content-Disposition: attachment; filename=\"".$ChoixNumFacture.".pdf\"\n\n"; 
         $attachement .= chunk_split(base64_encode($pg)); 
         $attachement .= $pg; 
         $attachement .= "\n\n\n------=$limite\n"; 
$ChoixNumFacture contient bien le numéro de facture à savoir "200700001".
La pièce jointe que je reçois ensuite dans le mail s'appelle seuleument ".pdf" => que l'extension et pas de nom.

Pourtant, un peu plus haut dans le code, quand j'appelle la PJ j'ai ceci :
$pj = "../admin/archivage_factures/".$annee."/".$ChoixNumFacture.".pdf";
et ça, ça marche trés bien, puisque c'est le bon fichier qui s'insère dans mon mail.

:roll:

Merci !

Eléphant du PHP | 451 Messages

14 mai 2007, 22:23

Bonsoir,

C'est un problème de portée des variables.
Tu déclares une variable $ChoixNumFacture dans la partie principale de ton programme.
Par défaut, elle n'est pas accessible à l'intérieur d'une fonction.

Deux solutions :
- soit tu rajoutes un paramètre à ta fonction pour lui passer l'information au moment de l'appel.
- soit tu déclares la variable en global dans la fonction où tu en as besoin.

Rajoute global $ChoixNumFacture; au début de la fonction :
function envoyermailpj($to, $subject, $message, $pj) { 
global $ChoixNumFacture;
         $limite = "_parties_".md5(uniqid (rand())); 
...
ça devrait marcher.
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Eléphant du PHP | 331 Messages

14 mai 2007, 22:34

Bien oui, c'est exactement ça, ça marche ! :shock:

Par contre, j'ai du mal à capter à quoi ça sert de la déclarer en global, et pourquoi ça ne marchait pas sans le faire.
Je vais essayer de me lire des tutos là dessus histoire de capter et de progresser. C'était une notion que je ne connaissais absolument pas, et qui est d'ailleurs encore nébuleuse pour moi !

MERCI ! :wink: