Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/10/2011, 13h33   #1
Invité de passage
 
Homme
Inscription : octobre 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2011
Messages : 4
Points : 2
Points : 2
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 :
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 :
$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.
dorian100 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 14h07   #2
Membre confirmé
 
Homme
Développeur informatique
Inscription : avril 2011
Messages : 196
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Italie

Informations professionnelles :
Activité : Développeur informatique
Secteur : Transports

Informations forums :
Inscription : avril 2011
Messages : 196
Points : 298
Points : 298
Tu devrait ouvrir ton fichier en mode écriture binaire wb puisque tu va le créer.
Code :
$fp = fopen($cheminfichier,'wb');
Le code en complet
Code :
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);
fab256 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 14h11   #3
Invité de passage
 
Homme
Inscription : octobre 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2011
Messages : 4
Points : 2
Points : 2
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 :
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\" />"; 
	}
?>
dorian100 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 21h42   #4
Membre confirmé
 
Homme
Développeur informatique
Inscription : avril 2011
Messages : 196
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Italie

Informations professionnelles :
Activité : Développeur informatique
Secteur : Transports

Informations forums :
Inscription : avril 2011
Messages : 196
Points : 298
Points : 298
tu as changé le code, il te faut un fichier temporaire pour stocker le PDF avant de l'attacher a un email

Code :
$cheminfichier='test.pdf';
Pas la peine de se connecter 2 fois a la base et faire 2 fois la meme chose
fab256 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h26.


 
 
 
 
Partenaires

Hébergement Web