Envoi de pièces jointes avec phpmailer

Fermé
christian82000 Messages postés 47 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 17 septembre 2020 - Modifié par christian82000 le 25/04/2016 à 10:07
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 27 avril 2016 à 11:23
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
25 avril 2016 à 11:24
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 dimanche 27 décembre 2009 Statut Membre Dernière intervention 17 septembre 2020
25 avril 2016 à 20:52
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
27 avril 2016 à 11:23
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