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

  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...

  7. #7
    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
    J'suis toujours dans la mouise, s'il vous plait un tit peu d'aide... Pourquoi mon pdf n'est pas joint au mail ?

    Pour ce qui est de la question du spam, apparement c'est juste parce que je passe par wamp et nerim? Quand je serais entierement online ca devrait mieux se passer

  8. #8
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    927
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 927
    Par défaut
    Salut,

    Je ne sais pas t'aider pour faire ça de la manière dont tu as commencé à le faire.

    Par contre, tu pourrais le faire en deux fois : d'abord tu génère le fichier PDF sur le serveur (en passant la destination 'F' à la fonction Output, pour sauver le fichier) et ensuite tu envoie le mail en y attachant le fichier PDF.

  9. #9
    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
    Merci de m'aider

    Donc en gros, je ne change rien a mon code, je met juste le output en F pour sauver (a ce sujet, ca va le sauvegarder où ? Et est ce que ca l'effacera apres envoie ? ) ?

    Puis une fois cela fait, est ce que je dois modifier le reste de mon code pour l'envoie ? Car la comme j'ai compris, c'est que je garde le meme code, et je remplace juste le S par le F ..

    J'suis débutant en php

    nb : si vous trouvez plus simple de l'envoyer par PhpMailer, je suis preneur, expliquez moi comment par contre . Mais si on peut faire avec lse fonction mail() utilisé ci dessus ca m'arrange car elle ne nécessite pas d'installer quelque chose

  10. #10
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    927
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 927
    Par défaut
    Salut,

    J'imaginais qu'avec PHP on pouvait envoyer un mail avec un fichier attaché facilement, mais je n'ai pas trouvé comment (pour le moment... ).

    Si c'est possible, et bien je te propose ceci :

    - En appellant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Output('nom_fichier.pdf', 'F');
    le fichier PDF est généré et sauvé sur le disque à la racine du site, je pense, et le nom est celui passé en paramètre.

    - Envoyer le mail avec le fichier précédemment généré.

    Sinon, tu fais comment toi ? C'est en utilisant les CONTENT-... qu'on attache un fichier au mail ?

    Désolé de te demander de l'aide sur ton poste où tu en cherche

  11. #11
    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
    Justement, la question que tu me pose est celle que je pose aussi XD.
    Pour ma part, regarde mon message du 29/03 et descent dans le code jusqu'a "piece jointe". Mais ca ne marche pas. Dans le mail j'ai un fichier html en joint, au lieu du pdf, et le contenu n'est pas celui du pdf :p

    Bref, je vais tester ton petit bout de code. SInon j'ai trouvé un code php sur internet, je vais le tester demain. Puis si rien ne passe je ferais phpMailer, apparement c'est infaillible

  12. #12
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    927
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 927
    Par défaut
    Bon bin si PHPMailer peut t'aider autant l'utiliser. Ta méthode doit fonctionner aussi mais PHPMailer est de plus haut niveau et écrira le mail et ses parties/entêtes tout seul.

    Code exemple avec phpmailer (http://stephaneey.developpez.com/tut...php/phpmailer/) :
    Code PHP : 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
    <?
        require "phpmailer2/class.phpmailer.php";
        $mail = new PHPmailer();
        $mail->IsSMTP();
        $mail->IsHTML(true);
        $mail->Host='hote_smtp';
        $mail->From='votre@adresse';
        $mail->AddAddress('adresse@destinataire');
        $mail->AddReplyTo('votre@adresse');    
        $mail->Subject='Exemple trouvé sur DVP';
        $mail->Body='<html><body><center><font size=8>Le fichier est attaché ci-dessus</font><br></body></html>';
        $mail->AddAttachment('chemin_fichier/fichier');
        
    
        if(!$mail->Send()){
          echo $mail->ErrorInfo; 
        }
        else{      
          echo 'Mail envoyé avec succès';
        }
        $mail->SmtpClose();
        unset($mail);
        
    
    
    ?>
    Ca semble directement plus simple

  13. #13
    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
    J'ai essayé comme tu m'a dit (avec le output('F')), mais ca ne marche toujours pas : je recois bien mon mail, mais la piece jointe est un document html nommé 'ATT00001', et quand je l'ouvre il y a marqué 'test de message'.

    'Test de message' correspond a ce qu'il y a dans le body de mon code...
    Bref, je ne sais pas d'où vient l'erreur.
    Peut etre de mon encodage du pdf ? ('Content-Transfer-Encoding: base64').

    Je vous met le code entier de ma page dans l'état tel quel (sans changer les chemins, les noms, ...). Peut etre aller vous trouver une grossiereté.
    Bon, si on ne trouve rien j'essayerai phpMAiler..

    Pour une lecture plus simple : la premiere partie de mon code, jusqu'a //DECLARE LES VARIABLES, ca correspond a mon code pour générer le pdf avec fdpf. Donc a partir de là c'est mon code pour envoyer le mail :

    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    <?php
    require('../fpdf.php');
     
    $niveau = $_POST['textfield1'] ;
    $entreprise = $_POST['textfield2'] ;
    $tel = $_POST['textfield3'] ;
    $fax = $_POST['textfield4'] ;
    $nombre = $_POST['textfield5'] ;
    $sujet = $_POST['textfield6'] ;
    $condition = $_POST['textfield7'] ;
    $contact = $_POST['textfield8'] ;
    $email = $_POST['textfield9'] ;
    $adresse = $_POST['textfield10'] ;
     
    $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);
     
    $pdf -> SetXY(5,85);
    $pdf -> Multicell(0,5,"I.U.P.-P.V.I.A\nProfesseur B.S. SANGWAN \n33 Rue St-Leu \n80039 AMIENS Cedex 1 \nTél. : 03.22.82.76.48 ou 49 \nFax : 03.22.82.76.12 \nE-mail : brigitte.sangwan@sc.u-picardie.fr");
    $pdf -> SetFont('Arial','B',10);
    $pdf -> SetXY(5,120);
    $pdf -> Multicell(0,1,"______________________________________________________________________________________________",'c');
    $pdf -> SetXY(5,130);
    $pdf -> Multicell(0,4,"Niveau requis : " .$niveau);
    $pdf -> SetXY(5,140);
    $pdf -> Multicell(0,4,"Nom de l'entrepise : " .$entreprise);
    $pdf -> SetXY(5,145);
    $pdf -> Multicell(0,5,"Adresse : " .$adresse);
    $pdf -> SetXY(5,160);
    $pdf -> Multicell(0,4,"Tel : " .$tel);
    $pdf -> SetXY(5,165);
    $pdf -> Multicell(0,4,"fax : " .$fax);
    $pdf -> SetXY(5,175);
    $pdf -> Multicell(0,4,"Propose d'accueillir : " .$nombre. " stagiaire(s)");
    $pdf -> SetXY(5,185);
    $pdf -> Multicell(0,5,"Sujet du stage : \n" .$sujet);
    $pdf -> SetXY(5,220);
    $pdf -> Multicell(0,5,"Conditions du stage : \n" .$condition);
    $pdf -> SetXY(5,245);
    $pdf -> Multicell(0,4,"Personne à contacter : " .$contact);
    $pdf -> SetXY(5,250);
    $pdf -> Multicell(0,4,"email : " .$email);
     
     //----------------------------------------------- 
         //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('F')))."\n";
         $destinataire='ericm83@hotmail.fr';
         if(mail($destinataire,'offre de stage',$message,$headers)) 
         { 
              echo 'Le mail a été envoyé'; 
         } 
         else 
         { 
              echo 'Le mail n\'a pu être envoyé'; 
         } 
     
    ?>

  14. #14
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    927
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 927
    Par défaut
    En attendant que quelqu'un qui sache de quoi on parle passe par ici ou que je me renseigne sur les mails, voilà un exemple de mail avec un fichier pdf attaché. J'ai récupéré ça avec Thunderbird, en faisant ctrl + u une fois le message sélectionné.

    From - Sat Apr 3 18:45:12 2010
    X-Account-Key: account2
    X-UIDL: GmailId4854321
    X-Mozilla-Status: 0001
    X-Mozilla-Status2: 10000000
    X-Mozilla-Keys:
    Return-Path: <expéditeur@mail.com>
    Received: from [192.168.0.100] ([ip expéditeur])
    by mx.google.com with ESMTPS id 13sm5459020ewy.9.2010.04.03.09.44.50
    (version=SSLv3 cipher=RC4-MD5);
    Sat, 03 Apr 2010 09:45:06 -0700 (PDT)
    Message-ID: <4BB88507E.8513647@mail.com>
    Date: Sat, 03 Apr 2010 18:44:46 +0200
    From: Nom expéditeur <expéditeur@mail.com>
    User-Agent: Thunderbird 2.0.0.24 (X11/20100317)
    MIME-Version: 1.0
    To: destinataire@mail.com
    Subject: Test fichier pdf
    Content-Type: multipart/mixed;
    boundary="------------040307040204090001090708"

    This is a multi-part message in MIME format.
    --------------040307040204090001090708
    Content-Type: text/html; charset=ISO-8859-1
    Content-Transfer-Encoding: 7bit

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    </head>
    <body bgcolor="#ffffff" text="#000000">
    Message HTML <b>en gras</b><br>
    </body>
    </html>

    --------------040307040204090001090708
    Content-Type: application/pdf;
    name="Nom_fichier_PDF.pdf"
    Content-Transfer-Encoding: base64
    Content-Disposition: inline;
    filename="Nom_fichier_PDF.pdf"

    JVBERi0xLjUNCiW1tbW1DQoxIDAgwIFIgMzcgMCBSXSA+Pg0
    ... suite du PDF et fin :
    bSAzMDU1MDQ+Pg0Kc3RhcnR4cmVmDQozMTA2NzcNCiUlRU9G
    --------------040307040204090001090708--
    A priori il suffirait de s'assurer que le contenu brut de ton mail soit identique à celà. J'espère que ça peut t'aider.

    Sinon, sur quoi t'ai tu basé pour écrire le code que tu propose ? Un tutoriel de génération de mail + pièces jointes ? Ou juste la théorie des mails et la fonction mail ? Ou tu as fais comme je viens de faire, récupérer le contenu d'un mail existant ? Parce que si tu as un guide/cours, ça m'intéresse.

  15. #15
    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
    Voila, j'ai utilisé phpmailer avec ton bot de code (en le modifiant un peu) et j'ai une erreur.

    Donc 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
    <?php
    require('../fpdf.php');
     
    //Ici se trouve tous le code necessaire a la génération du pdf. Pour les détails, voir post précédants
     
    $pdf->Output('monpdf.pdf');
     
    require "../class.phpmailer.php";
        $mail = new PHPmailer();
        $mail->IsSMTP();
        $mail->IsHTML(true);
        $mail->Host='SMTP.free.fr';
        $mail->From='ericm83@hotmail.fr';
        $mail->AddAddress('ericm83@hotmail.fr');
        $mail->AddReplyTo('no reply');    
        $mail->Subject='Test';
        $mail->Body='<html><body><center><font size=8>Le fichier est attaché ci-dessus</font><br></body></html>';
        $mail->AddAttachment('monpdf.php');
     
         if(!$mail->Send()){
          echo $mail->ErrorInfo; 
        }
        else{      
          echo 'Mail envoyé avec succès';
        }
        $mail->SmtpClose();
        unset($mail);
     
     
    ?>
    Et donc quand je fais ca, l'erreur ci dessous s'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Warning: fsockopen() [function.fsockopen]: unable to connect to SMTP.free.fr:25 in /mnt/107/sdb/9/4/iuppvia/class.smtp.php on line 122
    SMTP Error: Could not connect to SMTP host.
    La ligne 122 du smtp.php correspond au $tval); du code ci dessous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #connect to the smtp server
        $this->smtp_conn = fsockopen($host,    # the host of the server
                                     $port,    # the port to use
                                     $errno,   # error number if any
                                     $errstr,  # error message if any
                                     $tval);   # give up after ? secs
    nb : pour l'installation de PHPMAILER, je n'ai mis sur mon serveur les ficiers class.smtp.php et class.phpmailer.php, ainsi que les fichiers de language fr et en. Je pense que tous les autres fichiers sont inutiles, non ?

  16. #16
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    chez ton hébergeur, je pense qu'il y a une fonction "mail" déjà configurée donc tu n'as pas besoin de passer par un serveur SMTP spécial
    essayes en enlevant ces 2 lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        $mail->IsSMTP();
        $mail->Host='SMTP.free.fr';

  17. #17
    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
    Chez free la fonction php mail() est remplacée par la fonction email() si je ne m'abuse.

    Je viens de faire le test que tu m'as proposé, je recois donc bien un mail, de la part de "Root User" qui a pour adresse ericxxxx@hotmail.fr (donc bien pour l'adresse:p). Cependant il n'y a aucune piece jointe...

    Je suis pret a tout essayé pour que ca marche, ne me laisses pas tomber s'il te plait

    Encore merci de m'aider

  18. #18
    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
    tadaaaaa ca marche. En fin de compte on y était presque, fallait juste rajouter le petit quelque chose :

    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
    $doc = $pdf->Output('', 'S');
     
    require "../class.phpmailer.php";
        $mail = new PHPmailer();
        $mail->IsHTML(true);
        $mail->From='ericm83@hotmail.fr';
        $mail->AddAddress('ericm83@hotmail.fr');
        $mail->AddReplyTo('no reply');    
        $mail->Subject='Test';
        $mail->Body='<html><body><center><font size=8>Le fichier est attaché ci-dessus</font><br></body></html>';
        $mail->AddStringAttachment($doc, 'doc.pdf', 'base64', 'application/pdf');
        $mail->Send();
     
         if(!$mail->Send()){
          echo $mail->ErrorInfo; 
        }
        else{      
          echo 'Mail envoyé avec succès';
        }
        $mail->SmtpClose();
        unset($mail);
    C'est tout simplement fantastique, je suis un homme heureux
    Merci à tous pour votre aide

    Accessoirement, quand je recois le mai sur ma boite hotmail, celui ci est considéré come dangeureux (les pieces jointes sont donc bloqués jusqu'a ce que je decide de les debloquer). Ce n'est donc pas tres génant car j'ai acces aux pieces jointes, mais connaissez vous un moyen pour que mes mails ne soient pas considérés comme dangereux ? Mais c'est vraiment accessoire, si y a pas de réponse d'ici 24h je mettrais "Résolu"

    merci

  19. #19
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    927
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 927
    Par défaut
    Salut,

    Tout ce que je peux te dire c'est que c'est un problème fréquent, ça peut arriver pour différentes raisons :
    - l'IP de ton serveur de mail qui est refusée par le serveur de mail du destinataire
    - le format du mail n'est pas correcte (en-tête etc.)
    - des mots suspects dans le mail (viagra ?)...

  20. #20
    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
    J'ai pas mis viagra, mais des choses comme "masturbation" et autres . Je rigole bien sur, rien de tout ca. Je pense que ca vient donc de l'entete ou de l'IP, car je crois que je n'ai pas d'entete meme . Quand je recois le mail, le nom affiché de l'expéditeur est Root User (puis entre parenthese s'affiche l'adresse email du destinataire que j'ai entré dans le php).

    merci, je vais donc essayé de faire une entete

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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