Page 1 sur 1

Email Pièce jointe PDF marche mais certains le recoivent crypté

Posté : 18 déc. 2015, 17:08
par Eliaos
Bonjour à tous,
Comme dit dans le sujet j'ai un code d'envoi de mail via php avec l'ajout d'un pdf en pièce jointe.
Tout marche parfaitement mais pour une raison inconnu certains ne reçoivent pas la pièce jointe mais un long texte crypté du style : "pz^:^p^;;^&'éà";;("^m'";&:^é....."
je vous mets mon code en dessous si vous voyait des erreurs peut être ces personnes utilisent internet explorer ou mac je ne sais pas

Merci d'avance à tous !
<?php
	$to = $email;
	$from_mail = "***"; //Expediteur  
	$from_name = "***"; //Votre nom, ou nom du site  
	$reply_to  = "***"; //Adresse de réponse  

	// Subject
	$subject = 'Test';
	 
	// clé aléatoire de limite
	$boundary = md5(uniqid(microtime(), TRUE));
	 
	// Headers
	$headers = 'From: ***'."\r\n";
	$headers .= "Reply-to: ***\n";  
	$headers .= 'Mime-Version: 1.0'."\r\n";
	$headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
	$headers .= "\r\n";
	 
	// Message
	$msg = 'This is a multipart/mixed message.'."\r\n\r\n";
	 
	// Texte
	$msg .= '--'.$boundary."\r\n";
	$msg .= 'Content-type:text/plain;charset=utf-8'."\r\n";
	$msg .= 'Content-transfer-encoding:8bit'."\r\n";
	$msg .= 'Cordialement'."\r\n";
	 
	$file_name = $idnomdevis.".pdf"; 
	$path = $_SERVER['DOCUMENT_ROOT']."\pdf\\";  
	$typepiecejointe = filetype($path.$file_name);  
	$content = chunk_split(base64_encode(file_get_contents($path.$file_name)) ); 

	$chaine = $email;
	 //\b, dans le masque, indique une limite de mot, de façon à ce que le mot
	 //"web" uniquement soit repéré, et pas seulement des parties de mots comme
	 // dans "webbing" ou "cobweb" 
	if (preg_match("/gmail/i", $chaine)) {
		//code pour gmail et autre
		$msg .= "\r\n";
		$msg .= '--'.$boundary."\r\n";
		$msg .= 'Content-type:'.$typepiecejointe.';name='.$file_name."\r\n";
		$msg .= 'Content-transfer-encoding:base64'."\r\n";
		$msg .= $content."\r\n";
		// Fin
		$msg .= '--'.$boundary."\r\n";
	} else {
		//code pour wanadoo
		$msg .= "\r\n";  
		$msg .= "--$boundary \r\n";  
		$msg .= "Content-Type: $typepiecejointe; name=\"$file_name\" \r\n";  
		$msg .= "Content-Transfer-Encoding: base64 \r\n";  
		$msg .= "\r\n";  
		$msg .= $content."\r\n";  
		$msg .= "\r\n";  
		$msg .= "--".$boundary."--"; 
	}

	//Envoi du mail
	if(mail($to, $subject, $msg, $headers)){ 
	?>
	<a href='Accueil.php'>retour &acirc la page d'accueil</a><br/><br/>
	<a href="pdf/<?php echo $idnomdevis;?>.pdf" target="_blank"><h4>Cliquez ici pour avoir directement votre devis au format PDF</h4></a><br/><br/>
	
	<?php
	}else {
	echo "Une erreur s'est produite, contactez nous <br/><a href='Accueil.php'>retour &acirc la page d'accueil</a>";
	} 
	
	}
	?>

Re: Email Pièce jointe PDF marche mais certains le recoivent crypté

Posté : 19 déc. 2015, 12:30
par Ascla
Bonjour,
Je pense que le problème vient de l'encodage. Pourrais-tu nous donner plus d'informations sur ces utilisateurs qui ont le problème ?
Par quel service d'émail passent-ils ?

Re: Email Pièce jointe PDF marche mais certains le recoivent crypté

Posté : 21 déc. 2015, 10:54
par Eliaos
Je vais leur demandé et je vous réponds dès que j'aurais plus de précision

Re: Email Pièce jointe PDF marche mais certains le recoivent crypté

Posté : 21 déc. 2015, 11:19
par @rthur
Dans tous les cas ton code pour envoyer un mail est curieux...
Distinguer Wanadoo de Gmail à l'expédition, c'est absolument anormal, je ne sais pas d'où tu sors cette partie de code mais ça ne devrait pas exister.

La façon la plus simple pour envoyer un mail avec pièce jointe en limitant les soucis d'encodage, de type de fichier, etc... c'est de passer par une librairie type phpmailer qui saura gérer cela correctement.