IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[FPDF] Envoyer PDF généré par e-mail


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Par défaut [FPDF] Envoyer PDF généré par e-mail
    Bonsoir,

    je génère un pdf avec fpdf. Mais j'aimerais que, lors de sa génération, celui ci soit automatiquement envoyé sur mon adresse email (en piece jointe donc, au format pdf).

    Est ce que je peux utiliser simplement la fonction mail() pour cela ou je dois utiliser phpmailer ?

    Pour ce qui est de la fonction mail() j'ai trouvé un script qui me parait tres simple; dans l'exemple c'est un jpg qui est attaché, je me demande donc si on peut aussi attacher les pdf et si c'est adapté a mon cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <?php 
         //----------------------------------------------- 
         //DECLARE LES VARIABLES 
         //----------------------------------------------- 
     
         $email_expediteur='votre_mail@fai.fr'; 
         $email_reply='email_de_reponse@fai.fr'; 
         $message_texte='Bonjour,'."\n\n".'Voici un message au format texte'; 
     
         $message_html='<html> 
         <head> 
         <title>Titre</title> 
         </head> 
         <body>Test de message</body> 
         </html>'; 
     
         //----------------------------------------------- 
         //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML 
         //----------------------------------------------- 
     
         $frontiere = '-----=' . md5(uniqid(mt_rand())); 
     
         //----------------------------------------------- 
         //HEADERS DU MAIL 
         //----------------------------------------------- 
     
         $headers = 'From: "Nom" <'.$email_expediteur.'>'."\n"; 
         $headers .= 'Return-Path: <'.$email_reply.'>'."\n"; 
         $headers .= 'MIME-Version: 1.0'."\n"; 
         $headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"'; 
     
         //----------------------------------------------- 
         //MESSAGE TEXTE 
         //----------------------------------------------- 
         $message = 'This is a multi-part message in MIME format.'."\n\n"; 
     
         $message .= '--'.$frontiere."\n"; 
         $message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n"; 
         $message .= 'Content-Transfer-Encoding: 8bit'."\n\n"; 
         $message .= $message_texte."\n\n"; 
     
         //----------------------------------------------- 
         //MESSAGE HTML 
         //----------------------------------------------- 
         $message .= '--'.$frontiere."\n"; 
     
         $message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n"; 
         $message .= 'Content-Transfer-Encoding: 8bit'."\n\n"; 
         $message .= $message_html."\n\n"; 
     
         $message .= '--'.$frontiere.'--'."\n"; 
     
         //----------------------------------------------- 
         //PIECE JOINTE 
         //----------------------------------------------- 
     
         $message .= 'Content-Type: image/jpeg; name="nom_du_fichier.jpg"'."\n"; 
         $message .= 'Content-Transfer-Encoding: base64'."\n"; 
         $message .= 'Content-Disposition:attachement; filename="nom_du_fichier.jpg"'."\n\n"; 
     
         $message .= chunk_split(base64_encode(file_get_contents('nom_du_fichier.jpg')))."\n"; 
     
         if(mail($destinataire,$sujet,$message,$headers)) 
         { 
              echo 'Le mail a été envoyé'; 
         } 
         else 
         { 
              echo 'Le mail n\'a pu être envoyé'; 
         } 
    ?>
    Merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Au lieu du file_get_contents(), tu fais ton $pdf->output('S')
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Par défaut
    Je ne suis pas sur d'avoir tout saisi alors je vais te mettre le code comme je pense avoir compris (en modifiant quelques trucs en plus^^) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $message .= 'Content-Type: application/pdf ; name="nom_du_fichier.pdf"'."\n"; 
    $message .= 'Content-Transfer-Encoding: base64'."\n"; 
    $message .= 'Content-Disposition:attachement; filename="nom_du_fichier.pdf"'."\n\n"; 
     
    $message .= chunk_split(base64_encode($pdf->output('S')))."\n";
    J'ai donc fait ta modification + modification du content-type + modification de l'extansion du fichier en pdf.

    Est ce que ca devrait marcher comme ca ?

    Est ce que le "name" donnée a mon pdf est un nom donné a la volée ou alors je dois aussi le preciser quelque part d'autre ?( si j'ai bien compris, inutile de la préciser ailleur ce nom, il est donné par défaut avec le meme nom pour tout les pdf envoyés par mail).

    Derniere chose, je n'ai pas trouvé a quoi sert le output('S'). Pourquoi ce 'S' ? (je suis très curieux et je n'ai rien trouvé sur internet).

    Merci encore

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    je suis très curieux et je n'ai rien trouvé sur internet
    Heu dans la documentation de FPDF ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Par défaut
    En effet :
    S : renvoyer le document sous forme de chaîne. name est ignoré.
    J'avais cherché dans des forums au lieu d'aller directement à la source

    Bon bon, je m'appretais a faire le test ultime (en mettant otut sur internet car je ne sais pas comment on fait pour configurer les envois de mail sous wampserver^^), mais la je me demande :

    tout ce code pour l'envoi du pdf par mail est bien beau, mais on le place comment vis a vis du code qui génère le pdf ?

    Je m'explique : voici le code qui permet de générer mon pdf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    require('../fpdf.php');
     
    blablabla....
     
    $pdf=new FPDF();
    $pdf->AddPage();
    $pdf->SetFont('Arial','B',9);
    $pdf->image('../entreprises/logo.jpg',77,2,'','','','http://www.blablabla.fr');
     
    $pdf -> SetXY(80,72);
    $pdf -> Multicell(48,5,"blablabla",1);
     
    blablabla...
     
    // ***je place ici tous le code relatif a l'envoi du mail, en supprimant le Output() ci dessous ? 
    $pdf->Output();
    ?>
    Donc tout mon code pour l'envoi du mail je le place a la suite de celui ci dessus juste avant le ?>, et je supprime le Output() présent ci dessus (car dans la code de l'envoi du mail le output est deja present) ?
    nb : c'est a dire a l'endroit où j'ai mis une étoile dans le code ci dessus

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Par défaut
    Bon, j'ai reussi a configurer mon Wampserver, et génial, le mail est bien envoyé.

    Je recois donc un mail avec écrit
    bonjour, voici un message au format texte
    Mais mon fichier joint... C'est un fichier html nommé AT00001 et quand je l'ouvre il y a marqué
    test de message
    . Donc pas mon pdf attaché a l'horizon...

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <?php
    require('../fpdf.php');
     
    $pdf=new FPDF();
    $pdf->AddPage();
    $pdf->SetFont('Arial','B',9);
    $pdf->image('../entreprises/logo.jpg',77,2,'','','','http://www.u-picardie.fr');
     
    $pdf -> SetXY(80,72);
    $pdf -> Multicell(48,5,"Proposition de stage IUP PVIA",1);
     
    //blablablabla
     
     //----------------------------------------------- 
         //DECLARE LES VARIABLES 
         //----------------------------------------------- 
     
         $email_expediteur='ericm83@hotmail.fr'; 
         $email_reply='email_de_reponse@fai.fr'; 
         $message_texte='Bonjour,'."\n\n".'Voici un message au format texte'; 
     
         $message_html='<html> 
         <head> 
         <title>Titre</title> 
         </head> 
         <body>Test de message</body> 
         </html>'; 
     
         //----------------------------------------------- 
         //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML 
         //----------------------------------------------- 
     
         $frontiere = '-----=' . md5(uniqid(mt_rand())); 
     
         //----------------------------------------------- 
         //HEADERS DU MAIL 
         //----------------------------------------------- 
     
         $headers = 'From: "Site PVIA" <'.$email_expediteur.'>'."\n"; 
         $headers .= 'Return-Path: <'.$email_reply.'>'."\n"; 
         $headers .= 'MIME-Version: 1.0'."\n"; 
         $headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"'; 
     
         //----------------------------------------------- 
         //MESSAGE TEXTE 
         //----------------------------------------------- 
         $message = 'This is a multi-part message in MIME format.'."\n\n"; 
     
         $message .= '--'.$frontiere."\n"; 
         $message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n"; 
         $message .= 'Content-Transfer-Encoding: 8bit'."\n\n"; 
         $message .= $message_texte."\n\n"; 
     
         //----------------------------------------------- 
         //MESSAGE HTML 
         //----------------------------------------------- 
         $message .= '--'.$frontiere."\n"; 
     
         $message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n"; 
         $message .= 'Content-Transfer-Encoding: 8bit'."\n\n"; 
         $message .= $message_html."\n\n"; 
     
         $message .= '--'.$frontiere.'--'."\n"; 
     
         //----------------------------------------------- 
         //PIECE JOINTE 
         //----------------------------------------------- 
     
         $message .= 'Content-Type: application/pdf ; name="nom_du_fichier.pdf"'."\n"; 
         $message .= 'Content-Transfer-Encoding: base64'."\n"; 
         $message .= 'Content-Disposition:attachement; filename="nom_du_fichier.pdf"'."\n\n"; 
     
         $message .= chunk_split(base64_encode($pdf->output('S')))."\n";
         $destinataire='ericm83@hotmail.fr';
         if(mail($destinataire,$sujet,$message,$headers)) 
         { 
              echo 'Le mail a été envoyé'; 
         } 
         else 
         { 
              echo 'Le mail n\'a pu être envoyé'; 
         } 
    ?>
    nb : dans mon php.ini j'ai mis que le nom de l'expediteur c'est ericm83@hotmail.fr, donc c'est le meme que le nom du destinataire, mais je ne pense pas que ca joue quelque chose.

    Autre probleme, secondaire, en refaisant un test dans les meme conditions j'ai eu un message d'erreur

    Warning: mail() [function.mail]: SMTP server response: 554 <lamy.amiens.pck.nerim.net[213.41.243.215]>: Client host rejected: Du SPAM est envoye depuis votre connexion - Merci de contacter le support Nerim in D:\Programmes\wamp\www\entreprises\testpd2.php on line 110
    Le mail n'a pu être envoyé
    la ligne 110 correspond a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(mail($destinataire,$sujet,$message,$headers))
    mon FAI prends mon envoie de mail pour des spam... j'sais pas comment y remédier et surtout j'ai peur qu'une fois mon site en ligne j'aurais le meme probleme...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PDF publipostage par e mailing
    Par POC25 dans le forum Word
    Réponses: 7
    Dernier message: 25/10/2007, 15h42
  2. envoyer le résultat par e-mail
    Par young077 dans le forum Langage
    Réponses: 3
    Dernier message: 12/01/2007, 23h58
  3. Envoyer un état par e-mail
    Par tBruno dans le forum IHM
    Réponses: 4
    Dernier message: 20/12/2006, 18h02
  4. Ouvrir un .pdf généré par BIRT (+chart) avec IE
    Par tiboudchou dans le forum BIRT
    Réponses: 1
    Dernier message: 24/08/2006, 09h58
  5. [FLASH MX] Envoyer une image par e-mail
    Par skyjoe dans le forum Flash
    Réponses: 2
    Dernier message: 22/10/2004, 18h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo