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

Langage PHP Discussion :

Envoyer un PDF par mail sortit d'un BLOB


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 12
    Points : 15
    Points
    15
    Par défaut Envoyer un PDF par mail sortit d'un BLOB
    Bonjour,
    je travaille en ce moment sur un code complètement tordu (et qui n'est pas de moi) :

    des fichiers PDF sont stockés dans une BDD MySQL, il faut pouvoir les afficher à l'écran pour les consulter ( ça c'est bon) mais aussi pouvoir les envoyer par mail....
    pour l'affichage simple j'avais codé une page vers laquelle je faisais un lien avec un $_Get, elle se chargeait du reste, en voici le code :

    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
    <?php
    session_start();
    include ('config.php');
     
     $clef= $_GET['id'];
     
    mysql_connect("$host", "$user", "$password") or die(mysql_error());
    mysql_select_db("$db") or die( mysql_error());
    $req =mysql_query( "SELECT pdf FROM $table_parquet WHERE clef='$clef' ") or die (mysql_error ());
    $pdf= mysql_result ($req, 0);
     
     if ($pdf) {
        header('Content-Type: application/pdf') ;
        header("Content-Disposition: inline; filename=\"documentation_parq-".$clef.".pdf\"") ;
        header('Content-Length: ' . strlen($pdf)) ;
        echo $pdf ;
     }
    else {
    	echo" Aucune documentation n'est disponible pour le moment, veuillez nous en excuser.";
    	echo " <meta http-equiv=\"refresh\" content=\"3;url=fiche_parquet.php?id=$clef\" />"; 
    	}
    ?>

    pour l'envoyer par mail j'utilise phpmailer, mais pour placer ces pdf en pièce jointe, je ne vois pas trop comment procéder, j'ai déjà tenté d'ouvrir cette page avec la fonction fopen(); sous la forme :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $test= fopen ("pdf.php?id=$clef", 'r');
    pour ensuite enregistrer le pdf dans un répertoire et l'envoyer mais sans succès...

    une petite idée ?

    merci d'avance pour votre aide.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Points : 491
    Points
    491
    Par défaut
    Tu devrait ouvrir ton fichier en mode écriture binaire wb puisque tu va le créer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fp = fopen($cheminfichier,'wb');
    Le code en complet
    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
     
    <?php
    require "phpmailer2/class.phpmailer.php";
     
    session_start();
    include ('config.php');
     
    $cheminfichier='test.pdf'; 
    $clef= $_GET['id'];
     
    mysql_connect("$host", "$user", "$password") or die(mysql_error());
    mysql_select_db("$db") or die( mysql_error());
    $req =mysql_query( "SELECT pdf FROM $table_parquet WHERE clef='$clef' ") or die (mysql_error ());
    $pdf= mysql_result ($req, 0);
     
    $fp = fopen($cheminfichier,'wb');
    fwrite($fp,$pdf);
    fclose($fp);
     
    $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='Envoi fichier PDF';
    $mail->Body='<html><body><center><font size=8>Le fichier est attaché ci-dessus</font><br></body></html>';
    $mail->AddAttachment($cheminfichier);
     
    if(!$mail->Send()){
    echo $mail->ErrorInfo; 
    }
    else{	  
    echo 'Mail envoyé avec succès';
    }
    $mail->SmtpClose();
    unset($mail);

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 12
    Points : 15
    Points
    15
    Par défaut
    je viens d'essayer mais ça ne fonctionne pas, j'obtiens le message suivant :

    Warning: fopen(pdf.php?id=1) [function.fopen]: failed to open stream: No error in C:\wamp\www\Site sans nom 2\mail.php on line 22

    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
    <?php
    session_start();
    include ('config.php');
    include "phpmailer/class.phpmailer.php";
     $clef= $_GET['id'];
     
    mysql_connect("$host", "$user", "$password") or die(mysql_error());
    mysql_select_db("$db") or die( mysql_error());
    $req =mysql_query( "SELECT pdf FROM $table_parquet WHERE clef='$clef' ") or die (mysql_error ());
    $pdf= mysql_result ($req, 0);
     
     if ($pdf) {
     
    	 $clef= $_GET['id'];
    	$cheminfichier='pdf.php?id='.$clef; 
     
    	mysql_connect("$host", "$user", "$password") or die(mysql_error());
    	mysql_select_db("$db") or die( mysql_error());
    	$req =mysql_query( "SELECT pdf FROM $table_parquet WHERE clef='$clef' ") or die (mysql_error ());
    	$pdf= mysql_result ($req, 0);
     
    	$fp = fopen($cheminfichier,'wb');
    	fwrite($fp,$pdf);
    	fclose($fp);
     
     
    	$mail = new PHPmailer();
    	$mail->IsHTML(true);
    	$mail->From="$expediteur";
    	$mail->AddAddress("{$_POST['mail_client']}");
    	$mail->AddReplyTo("$mail_entrepise");	
    	$mail->Subject="$sujet";
    	$mail->Body="$corps";
    	$mail->AddAttachment("$pdf");
     
     
    	if(!$mail->Send()){
    	  echo $mail->ErrorInfo; 
    	}
    	else{	  
    	  echo 'Mail envoyé avec succès';
    	}
     
    	unset($mail);
    	echo " <meta http-equiv=\"refresh\" content=\"3;url=fiche_parquet.php?id=$clef\" />";
     }
    else {
    	echo" Aucune documentation n'est disponible pour le moment, veuillez nous en excuser.";
    	echo " <meta http-equiv=\"refresh\" content=\"3;url=fiche_parquet.php?id=$clef\" />"; 
    	}
    ?>

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Points : 491
    Points
    491
    Par défaut
    tu as changé le code, il te faut un fichier temporaire pour stocker le PDF avant de l'attacher a un email

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $cheminfichier='test.pdf';
    Pas la peine de se connecter 2 fois a la base et faire 2 fois la meme chose

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

Discussions similaires

  1. code pour comparer deux fichier pdf et envoyer le résultat par mail
    Par rihama dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 06/05/2014, 15h25
  2. [AC-2007] Envoyer un etat en pdf par mail
    Par Debutant10 dans le forum IHM
    Réponses: 2
    Dernier message: 11/06/2011, 03h35
  3. [XL-2003] Envoyer un fichier Excel en Pdf par mail
    Par FCL31 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/03/2010, 16h29
  4. Réponses: 1
    Dernier message: 03/12/2005, 12h24
  5. [Mail] Envoyer un fichier par mail
    Par Oberown dans le forum Langage
    Réponses: 3
    Dernier message: 24/10/2005, 15h55

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