[RESOLU] PhpMailer/envoi e-mails erreur 10061, impossible cnx serveur

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] PhpMailer/envoi e-mails erreur 10061, impossible cnx serveur

Re: PhpMailer/envoi e-mails erreur 10061, impossible cnx ser

par ionesco » 02 sept. 2013, 22:56

Bonjour,
Alors pour me connecter, j'ai fini par trouver une réponse sur la toile.
En substance, pour ceux qui souhaiteraient utiliser PhpMailer, il faut importer cette classe qui se trouve dans le fichier téléchargé: require_once("mailer/class.smtp.php");
Ensuite, vous l'ouvrez (class.smtp.php) et faites les modifications suivantes:
A $host, vous collez ce code:
$host = "ssl://smtp.gmail.com";
Et à port :
$port = 465;

PS: il faudra supprimer dans votre code les lignes se référant au smtpSecure,host et port pour que ça fonctionne.

Grâce aux indications de Moogli, un BIG THANKS by the way, j'ai pu envoyer mon mail groupé.
Je poste mon code pour ceux que ça aiderait:
<?php
require_once("mailer/class.phpmailer.php"); 
require_once("mailer/class.smtp.php"); 
?>
<?php
//Se connecter à la base avec le try catch qui sera fermé en bout de code
	
	if(isset($_POST['envoiMel'])){
		$mail=new PHPMailer(); 
		$mail->IsSMTP();
		$mail->IsHTML(true);		
		$mail->SMTPDebug=1;
		$mail->SMTPAuth=true;
		$mail->Username='[email protected]'; 
		$mail->Password='xxxx'; 
		$mail->SetFrom("[email protected]");
		$mail->AddAddress("[email protected]");
		$mail->CharSet="utf-8"; 
		$mail->Subject="Votre mot de passe";
		
//rajout du nom	
		$requete=$cnx->query('SELECT nom,mdp,mail FROM users');
		
		while($data=$requete->fetch(PDO::FETCH_ASSOC)){
			$mail->AddAddress($data['mail']);
			$body="Bonjour,".$data['nom'].", votre code est le suivant:<br>".$data['mdp']."<br/>";
			$mail->MsgHTML($body); 
			if(!$mail->Send()){
					echo 'E-mail non envoyé';
					echo 'Mailer error: ' . $mail->ErrorInfo; 
			}else{
					//echo 'Message envoyé'; 
			}			
			$mail->ClearAddresses(); // suppression des adresses déjà entrées. C top cette astuce
		} //fin du while
		$requete->closeCursor(); 
	} //fin isset
} catch (PDOException $e) {
    echo 'Erreur PDO:' . $e->getMessage();
    echo $e->getTraceAsString();// pratique aussi, si tu es en debug
}
Cheers à tous et à toutes
Cdlt,
Ionesco

Re: PhpMailer/envoi e-mails erreur 10061, impossible cnx ser

par moogli » 02 sept. 2013, 19:15

salut,


faudrait jeter un oeil à la doc de gamil mais le message d'erreur me semble assez explicite ;)

Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.
en gros tu te fait refouler par le vigile :mrgreen: (t'as des baskets tu rentre pas ....).

par contre ton code envoie le dernier mot de passe a toutes les adresses mail de la liste ;)

ce que tu veux c'est envoyer un mail par adresse. Ta logique n'est pas bonne ;)

Je verrais ton code plus comme ceci
<?php
try {
    $dns = 'mysql:host=localhost;dbname=nom_bdd'; // le chemin vers le serveur
    $user = 'xxx'; // nom d'utilisateur pour se connecter
    $mdp = 'xxx'; // mot de passe de l'utilisateur pour se connecter
    $cnx = new PDO($dns, $user, $mdp);

    if (isset($_POST['envoiMel'])) {
        
        include("mailer/class.phpmailer.php");

        $mail = new PHPMailer();
        $mail->IsSMTP();
        $mail->IsHTML(true);
        $mail->SMTPDebug = 1;
        $mail->SMTPAuth = true;
        $mail->SMTPSecure = 'ssl';
        $mail->HOST = 'smtp.gmail.com';
        $mail->Port = 465;
        $mail->Username = '[email protected]';
        $mail->Password = 'xxxxxx';
        $mail->SetFrom("[email protected]");
        $mail->CharSet = "utf-8";
        $mail->Subject = "Votre mot de passe";
        // "Template du mesage
        $msgTemplate = 'Votre code est le suivant: <br/>{motdepasse}';

        $requete = $cnx->query('SELECT mail,mdp FROM users');
        while ($data = $requete->fetch(PDO::FETCH_ASSOC)) {
            $mail->AddAddress($data['mail']); // ajout adresse
            $mail->MsgHTML(str_replace('{motdepasse}',$data['mdp'],$msgTemplate)); // ajout message
            if (!$mail->Send()) {
                echo 'E-mail non envoyé';
                echo 'Mailer error: ' . $mail->ErrorInfo;
            } else {
                echo 'Message envoyé';
            }
            $mail->ClearAddresses(); // suppression des adresses déja entrées (donc ici celle mise ligne 30)
            $mail->ClearAttachments();// suppression pièces jointes, par forcément utile ici
        }
        $requete->closeCursor();
    }
} catch (PDOException $e) {
    echo 'Erreur PDO:' . $e->getMessage();
    echo $e->getTraceAsString();// pratique aussi, si tu es en debug
}


@+

PhpMailer/envoi e-mails erreur 10061, impossible cnx serveur

par ionesco » 02 sept. 2013, 13:17

Bonjour,
J'ai une base de données de x utilisateurs. Je génère automatiquement leur mot de passe. Je souhaite leur communiquer via un formulaire et faire un envoi groupé. Je récupère les e-mails et codes et j'envoie l'e-mail à chacun. Mais je tombe sur un os et reçois ce message d'erreur que je ne parviens pas à corriger.
Pour info:
-je suis en localhost sur WampServer
-j'ai désactivé le pare-feu et antivirus mais malgré tout le problème persiste
Message d'erreur:
SMTP -> ERROR: Failed to connect to server: Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée. (10061)
SMTP Error: Could not connect to SMTP host. E-mail non envoyé

Code php
try {
	$dns='mysql:host=localhost; dbname=nom_bdd'; // le chemin vers le serveur
	$user='xxx'; // nom d'utilisateur pour se connecter
	$mdp='xxx'; // mot de passe de l'utilisateur pour se connecter
	$cnx=new PDO($dns,$user,$mdp); 
	$cnx->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
}catch (PDOException $e ){
	echo 'Erreur PDO:'.$e->getMessage();
}
		
	if(isset($_POST['envoiMel'])){
		$requete=$cnx->query('SELECT mail,mdp FROM users');
		include("mailer/class.phpmailer.php"); 
		include("mailer/class.smtp.php"); 
		$mail=new PHPMailer(); 
		
		while($data=$requete->fetch(PDO::FETCH_ASSOC)){
			$mail->AddAddress($data['mail']);
		}
		$requete->closeCursor();
		
                $message="Votre code est le suivant: <br/>";
		$message.=$data['mdp'];
		
		$mail->IsSMTP();
		$mail->IsHTML(true);		
		$mail->SMTPDebug=1;
		$mail->SMTPAuth=true;
		$mail->SMTPSecure='ssl';
		$mail->HOST='smtp.gmail.com';
		$mail->Port=465;
		$mail->Username='[email protected]'; 
		$mail->Password='xxxxxx'; 
		$mail->SetFrom("[email protected]");
		$mail->AddAddress("[email protected]");
		$mail->CharSet="utf-8"; 
		$mail->Subject="Votre mot de passe";
		$mail->MsgHTML($message);

	
			if(!$mail->Send()){
					echo 'E-mail non envoyé';
					echo 'Mailer error: ' . $mail->ErrorInfo; 
			}else{
					echo 'Message envoyé'; 
				}
	} 
?>
Mon formulaire pour l'envoi
<!DOCTYPE>
<html>
<body>
<h5>ENVOI DES MDP AUX UTILISATEURS</h5>
<form method="post" action="envoiMel.php">
<button type="submit" name="envoiMel"> ENVOI E-MAIL
</button>
</form>
</body>
</html>
La configuration du smtp est correct. J'ai utilisé phpMailer avec un formulaire et des champs. Ca fonctionne très bien, je reçois l'e-mail mais lorsque que je dois interroger la bdd et faire un envoi multiple, ça plante. Pourquoi? Je ne comprends pas. La requête n'est peut-être pas adaptée à ce que je recherche.

Merci pour votre aide.
Cordialement
Ionesco