Envoi de pièces jointes avec phpmailer

christian82000 Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   -  
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai une application web qui est sensée ,envoyer des messages avec ou sans pièces jointes à l'aide de phpmailer. Lorsqu'il n'y a pas de pièces jointes, tout se déroule normalement. Par contre, si une pièce est jointe, j'ai le message suivant :" Could not instantiate mail ".
Après 2 jours de recherche, toujours pas de solution trouvée, celles proposées sur internet ne fonctionnant pas. Sans doute une erreur de programmation? Je précise que les pièces jointes, au format pdf, sont déjà sur le serveur de mon hébergeur (OVH).
Je vous donne mon code:

<?php 
		//récupération des données du formulaire
			$from=$_POST["from"];
			$Expediteur=$_POST["NomExpediteur"];
			$sujet=$_POST["sujet"];
			$select=$_POST["select"];
			$message=$_POST["Message"];
			$pj=$_POST["PieceJointe"];
			
				
		//déclaration du mail
			require("PHPMailer/class.phpmailer.php"); 
						
		//sélection des destinataires. 
		//$select vaut 1 pour les adhérents, 2 pour les non adhérents et null pour l'ensemble des CE, d'où le else qui ne filtre rien si $select vaut null.
			
		if(!empty($select))
			{
			$Adresses = $bdd->prepare('SELECT Nom, Prenom, Adherent, Courriel FROM ce WHERE Adherent=?');
			$Adresses->execute(array($select));
			}
			else
				{$Adresses = $bdd->prepare('SELECT Nom, Prenom, Adherent, Courriel FROM ce');
				$Adresses->execute(array());
				}
				
		//préparation du mail	
		While($Contacts = $Adresses->fetch())
			{	
			$mail = new PHPMailer(); 
			$mail->Host = 'smtp.mondomaine.fr';
			$mail->SMTPAuth = false;
			
			$mail->From = $from; 
			$mail->FromName = utf8_decode($Expediteur)." ";
			$mail->AddAddress( utf8_decode($Contacts['Nom']).' '.utf8_decode($Contacts['Prenom'])." ".$Contacts['Courriel']);
			$mail->AddCC ('mon.mail@orange.fr');
						
		 	$mail->Subject=utf8_decode($sujet); 
			$mail->Body=utf8_decode($message); 

			if(!empty($pj))
				{
				$mail->AddAttachment('PiecesJointes/' . $pj); 
				}
			
			//envoi du mail		
			$mail->Send();
			
			echo $mail->ErrorInfo;  
		   
			echo 'Mail envoyé avec succès<br>'; 
			}
		$Adresses->closeCursor();	
		$bdd=null;
		?> 


Voilà, si quelqu'un, ou quelqu'une! à une idée, qu'il en soit remercié par avance.
Christian

1 réponse

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Essaye en configurant PHPMailer afin qu'il utilise le serveur smtp :
$mail = new PHPMailer(); 
$mail->isSMTP();
$mail->Host = 'smtp.mondomaine.fr';


Bonne journée
0
christian82000 Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Pitet,
Tout d'abord, merci pour ta réponse.
J'ai testé ta proposition, qui n'a pas résolu le problème, du moins en apparence. Je m'explique : en ajoutant "$mail->isSMTP();", j'obtiens une page blanche, et bien sur le mail ne part pas. Sans cette ligne, on a le message d'erreur "Could not instantiate mail function".
Je pense à un problème de paramétrage de phpmailer....
Deux précisions sont peut-être utiles :
1 : Version php 5.6
2 : version phpmaler 2.0.4
Problème de compatibilité?
Cordialement,
Christian
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Une page blanche indique souvent une erreur de syntaxe et/ou une erreur php, tu dois pouvoir accéder aux détails de ces erreurs via les logs du serveur web.

La version 2.0.4 de PHPMailer semble dater de plus de 5 ans, il serait temps de le mettre à jour ;)
La dernière version stable à ce jour est la 5.2.14 disponible ici : https://github.com/PHPMailer/PHPMailer/releases
Je t'invite donc fortement à mettre à jour PHPMailer.

Tu pourras également trouver des exemples d'utilisation ici : https://github.com/PHPMailer/PHPMailer/tree/master/examples
0