8768 sujets

Développement web côté serveur, CMS

Bonjour,
j'ai vu ce matin que PHPMailer 6.0.1 était disponible.
J'ai donc voulu l'utiliser sur mon site en remplacement de PHPMailer 5.2.23.
J'ai donc remplacé le code suivant :
<?php
set_include_path($_SERVER['DOCUMENT_ROOT']);
require_once 'inclus/lib/PHPMailer-master/PHPMailerAutoload.php';
require_once 'inclus/consts.php';
session_start();
$_SESSION['identite'] = $_POST['identite'];
$_SESSION['mail'] = $_POST['email'];
$_SESSION['sujet'] = $_POST['sujet'];
$_SESSION['msg'] = $_POST['msg'];
$frommail="no_reply@progaccess33.net";
$fromtexte="formulaire ".$nomdusite;
if(isset($_POST['identite']) and isset($_POST['email']) and isset($_POST['sujet']) and isset($_POST['msg']) and isset($_POST['attchar_code']) and isset($_POST['attchar_auto'])) {
include($_SERVER['DOCUMENT_ROOT'].'/attchar/attchar_get.php');
if($attchar_ok) {

$msg = "<!doctype html>
<html lang=\"fr\">
<head>
<meta charset=\"utf-8\" />
<title>".$_POST['sujet']."</title>
</head>
<body>
<h1>Ce message a été envoyé depuis le formulaire d'ajout de site de ".$nomdusite." par ".$_POST['identite'].", <a href=\"mailto:".$_POST['email']."\">".$_POST['email']."</a></h1>
<p>".nl2br($_POST['msg'])."</p>
</body>
</html>";

$msg2 = "Ce message a été envoyé depuis le formulaire d'ajout de site de ".$nomdusite." par ".$_POST['identite'].", ".$_POST['email']."
son message est :\n".
strip_tags(html_entity_decode($_POST['msg']));

$strDestin="miklhcos@progaccess33.net";
$sujet = $_POST['sujet'];
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'mail.zajda.fr';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'xx';
$mail->Password = 'xx';
$mail->setFrom($frommail, $fromtexte);
$mail->addReplyTo($_POST['email'], $_POST['identite']);
$mail->AddAddress($strDestin);
$mail->Subject = $sujet;
$mail->CharSet = 'UTF-8';
$mail->IsHTML(TRUE);
$mail->Body = $msg;
$mail->AltBody = $msg2;
if($mail->send()) {
$log='Merci, demande enregistrée';
session_destroy();
} else
$log='Une erreur a empêchée l\'envoi du message';
} else
$log = 'Code attchar invalide, vilain robot maléfique !!!'; }
$titre='Résultats de la demande d\'ajout aux sites utiles de '.$nomdusite;
$cheminaudio='/audio/sons_des_pages/chimes.mp3';
$stats_page = 'sites_ajout'; ?>
<!doctype html>
<html lang="fr">
<?php require_once 'inclus/header.php'; ?>
<body>
<div id="hautpage" role="banner">
<h1><?php
date_default_timezone_set('Europe/Paris');
setlocale(LC_TIME,'fr_FR.UTF8');
print $nomdusite; ?></h1>
<?php if(isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== FALSE) include 'inclus/trident.php'; ?>
<div id="searchtool" role="search">
<form action="/search/" method="get">
<label for="searchtool_text">Rechercher</label>
<input id="searchtool_text" type="search" name="q" /><br />
<select id="searchtool_cat" title="catégorie" name="c"><option value="" selected>Tout</option><?php include('cache/menu_search.html'); ?></select>
<input id="searchtool_go" type="submit" value="Rechercher" />
</form>
</div>
<?php include 'inclus/loginbox.php'; ?>
</div>
<?php include('inclus/son.php');
include 'inclus/menu.php'; ?>
<div id="container" role="main">
<h1 id="contenu"><?php print $titre; ?></h1>
<?php print $log; ?><br />
<a href="/sites.php">Retour à la page des sites utiles</a>
</div>
<?php require_once 'inclus/footer.php'; ?>
</body>
</html>

par celui-ci :

<?php
set_include_path($_SERVER['DOCUMENT_ROOT']);
require_once 'inclus/consts.php';
session_start();
$_SESSION['identite'] = $_POST['identite'];
$_SESSION['mail'] = $_POST['email'];
$_SESSION['sujet'] = $_POST['sujet'];
$_SESSION['msg'] = $_POST['msg'];
$frommail="no_reply@progaccess33.net";
$fromtexte="formulaire ".$nomdusite;
if(isset($_POST['identite']) and isset($_POST['email']) and isset($_POST['sujet']) and isset($_POST['msg']) and isset($_POST['attchar_code']) and isset($_POST['attchar_auto'])) {
include($_SERVER['DOCUMENT_ROOT'].'/attchar/attchar_get.php');
if($attchar_ok) {

$msg = "<!doctype html>
<html lang=\"fr\">
<head>
<meta charset=\"utf-8\" />
<title>".$_POST['sujet']."</title>
</head>
<body>
<h1>Ce message a été envoyé depuis le formulaire d'ajout de site de ".$nomdusite." par ".$_POST['identite'].", <a href=\"mailto:".$_POST['email']."\">".$_POST['email']."</a></h1>
<p>".nl2br($_POST['msg'])."</p>
</body>
</html>";

$msg2 = "Ce message a été envoyé depuis le formulaire d'ajout de site de ".$nomdusite." par ".$_POST['identite'].", ".$_POST['email']."
son message est :\n".
strip_tags(html_entity_decode($_POST['msg']));

$strDestin="miklhcos@progaccess33.net";
$sujet = $_POST['sujet'];
use PHPMailer\PHPMailer\PHPMailer;
require 'inclus/lib/PHPMailer/src/PHPMailer.php';
require 'inclus/lib/PHPMailer/src/SMTP.php';
require 'inclus/lib/PHPMailer/src/Exception.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'mail.zajda.fr';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'xx';
$mail->Password = 'xx';
$mail->setFrom($frommail, $fromtexte);
$mail->addReplyTo($_POST['email'], $_POST['identite']);
$mail->AddAddress($strDestin);
$mail->Subject = $sujet;
$mail->CharSet = 'UTF-8';
$mail->IsHTML(TRUE);
$mail->Body = $msg;
$mail->AltBody = $msg2;
if($mail->send()) {
$log='Merci, demande enregistrée';
session_destroy();
} else
$log='Une erreur a empêchée l\'envoi du message';
} else
$log = 'Code attchar invalide, vilain robot maléfique !!!'; }
$titre='Résultats de la demande d\'ajout aux sites utiles de '.$nomdusite;
$cheminaudio='/audio/sons_des_pages/chimes.mp3';
$stats_page = 'sites_ajout'; ?>
<!doctype html>
<html lang="fr">
<?php require_once 'inclus/header.php'; ?>
<body>
<div id="hautpage" role="banner">
<h1><?php
date_default_timezone_set('Europe/Paris');
setlocale(LC_TIME,'fr_FR.UTF8');
print $nomdusite; ?></h1>
<?php if(isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== FALSE) include 'inclus/trident.php'; ?>
<div id="searchtool" role="search">
<form action="/search/" method="get">
<label for="searchtool_text">Rechercher</label>
<input id="searchtool_text" type="search" name="q" /><br />
<select id="searchtool_cat" title="catégorie" name="c"><option value="" selected>Tout</option><?php include('cache/menu_search.html'); ?></select>
<input id="searchtool_go" type="submit" value="Rechercher" />
</form>
</div>
<?php include 'inclus/loginbox.php'; ?>
</div>
<?php include('inclus/son.php');
include 'inclus/menu.php'; ?>
<div id="container" role="main">
<h1 id="contenu"><?php print $titre; ?></h1>
<?php print $log; ?><br />
<a href="/sites.php">Retour à la page des sites utiles</a>
</div>
<?php require_once 'inclus/footer.php'; ?>
</body>
</html>

après avoir bien entendu uploadé le nouveau PHPMailer 6.0.1 dans le dossier indiqué, inclus/lib/PHPMailer

mais, ma page ne charge pas, et le log du serveur m'indique qu'il n'attend pas l'instruction use à la ligne où elle se trouve.

Une idée sur comment régler ce problème et donc faire la migration sans pb ?

Merci d'avance.
Modifié par pa33 (01 Nov 2017 - 09:35)
Bonjour,

Je suis dans la même situation que toi, je n'arrive pas à migrer.

Il y a des explications à cette adresse.

Mais je ne sais pas ce qu'est le composer dont ils parlent.

Et je ne comprends rien à leur alternative.

Je suis sur un Mutu, je ne sais pas si je peux faire ce qui est demandé (en supposant que d'abord je comprenne).
bonjour boteha_2, pa33 et à tous.
Je m'appelle Régis, j'ai reçu une demande en rapport à PHPMailler.
Je suis débutant, mais j'ai fait un exercice proche de la demande de celui de pa33,
Je n'est pas eu à travailler avec la version 6. 0...... mais avec la version 5.5....
enfin peu importe. Voici ce que j'ai fait.
1 télécharger l'application sur https://github.com/PHPMailer/PHPMailer
2 Une fois dézippé, placez le dossier/contenu, dans un répertoire de travail,
au même niveau que vos .html ou .php ou encore votre .css.
3 voici ce que j'ai mis dans mon fichier envoiEmailPHPMailer.php,
attention le votre ne sera différence car votre formulaire est plus complexe,
mais je pense que l'appel de l'application sera le même, mise à part qu'il me semble,
que vous travaillez en local ce qui n'est le cas pour moi (il faudra faire une petite adaptation de votre chemin).
Voici mon code
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Formulaire d'envoi Mailerphp</title>
<link rel="stylesheet" type="text/css" href="index.css">
</head>
<body>
<?php
/**
Import des classes PHPMailer dans l’espace de nommage.
Ces instructions doivent être placées en début de script*/
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'PHPMailer-master/src/PHPMailer.php';
require 'PHPMailer-master/src/Exception.php';
$contenu = "";

//vérification des données reçues du formulaire
$nom = (isset($_POST['nom']))?$_POST['nom']:"Sans nom";
$prenom = (isset($_POST['prenom']))?$_POST['prenom']:"Sans prénom";
$email = (isset($_POST['email']))?$_POST['email']:"Sans Email";
$message = (isset($_POST['message']))?$_POST['message']:"aucun message";
/*
Création de la variable $contenu qui va contenir
tout le commentaires de l'email et autoformat HTML*/
$contenu .= "Message de : <strong>".$nom." ".$prenom."</strong>";
$contenu .= "<hr/>";
$contenu .= Stripslashes($message);
/**
Instanciation de la classe PHPMailer
avec la variable/objet : "$mail"*/
$mail = new PHPMailer();
// var_dump($mail);
/*******************************
Traitement d'envoi d'email.*/
try{
// Attributs
$mail->From = $email;
// var_dump($mail);
$mail->FromName = $nom." ".$prenom;
$mail->CharSet = 'UTF-8';
// nl2br spécifie un retour ligne à chaque ligne
$mail->MsgHTML(nl2br($contenu));
$mail->AltBody = "<p>Ce message est au format HTML, votre messagerie n'accepte pas ce format.</p>";
// Méthodes
$mail->AddAddress("formation@cefii.fr", "Vous formateur");
// var_dump($mail);

/* vérif envoi de fichier
Joint le fichier à l'email*/
if(isset($_FILES['fichier']) && ($_FILES['fichier']['error'] == 0)) {
$fichier = $_FILES['fichier']['name'];
$chemin = $_FILES['fichier']['tmp_name'];
$mail->Subject = $fichier;
echo "En pièce jointe le fichier : <strong>\"$fichier\"</strong>";
// Récupère nom et emplacement du fichier
$mail->AddAttachment($chemin,$fichier);
echo "Son emplacement est : $chemin <br />";
}
else {
$mail->Subject = 'Email sans fichier ';
echo "Pas de PJ <br>";
}
$mail->Send();
}
/************* FIN TRY *****************/

/** Traitement de l’exception relevée en cas d’erreur
du traitement précédent : le (try)*/
catch (Exception $e){
echo 'Message non envoyé ';
echo 'Erreur: ' . $mail->ErrorInfo;
}
echo "<br><a href='index.html'>Retour au formulaire de contact</a>";
?>
</body>
</html>

J'espère que m'a réponse vous sera utile, attention seul le début du code peu éventuellement être applicable après adaptation du chemin.
Car je n'ai pas vu dans votre tentative d'envoi du mail "pa33" ni de try ni de catch,
Je ne connais pas votre méthode d'envoi alors faite bien attention mon .php
pourrait ne pas vous convenir voir vous compliquer la tâche.
En tout cas je pense qu'il vaut viser src/Exception.php

Régis Chemineau
bonjour boteha_2, pa33 et à tous.
Je m'appelle Régis, j'ai reçu une demande en rapport à PHPMailler.
Je suis débutant, mais j'ai fait un exercice proche de la demande de celui de pa33,
Je n'est pas eu à travailler avec la version 6. 0...... mais avec la version 5.5....
enfin peu importe. Voici ce que j'ai fait.
1 télécharger l'application sur https://github.com/PHPMailer/PHPMailer
2 Une fois dézippé, placez le dossier/contenu, dans un répertoire de travail,
au même niveau que vos .html ou .php ou encore votre .css.
3 voici ce que j'ai mis dans mon fichier envoiEmailPHPMailer.php,
attention le votre ne sera différence car votre formulaire est plus complexe,
mais je pense que l'appel de l'application sera le même, mise à part qu'il me semble,
que vous travaillez en local ce qui n'est le cas pour moi (il faudra faire une petite adaptation de votre chemin).
Voici mon code
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Formulaire d'envoi Mailerphp</title>
<link rel="stylesheet" type="text/css" href="index.css">
</head>
<body>

<?php
/**
Import des classes PHPMailer dans l’espace de nommage.
Ces instructions doivent être placées en début de script*/
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'PHPMailer-master/src/PHPMailer.php';
require 'PHPMailer-master/src/Exception.php';
$contenu = "";

//vérification des données reçues du formulaire
$nom	= (isset($_POST['nom']))?$_POST['nom']:"Sans nom";
$prenom	= (isset($_POST['prenom']))?$_POST['prenom']:"Sans prénom";
$email	= (isset($_POST['email']))?$_POST['email']:"Sans Email";
$message	= (isset($_POST['message']))?$_POST['message']:"aucun message";
/*
Création de la variable $contenu qui va contenir
tout le commentaires de l'email et autoformat HTML*/
$contenu .= "Message de : <strong>".$nom." ".$prenom."</strong>";
$contenu .= "<hr/>";
$contenu .= Stripslashes($message);
/**
Instanciation de la classe PHPMailer
avec la variable/objet : "$mail"*/
$mail = new PHPMailer();
//	var_dump($mail);
/*******************************
Traitement d'envoi d'email.*/	
try{
// Attributs
$mail->From = $email;
//	var_dump($mail);
$mail->FromName = $nom." ".$prenom;
$mail->CharSet = 'UTF-8';
// nl2br spécifie un retour ligne à chaque ligne	
$mail->MsgHTML(nl2br($contenu));
$mail->AltBody = "<p>Ce message est au format HTML, votre messagerie n'accepte pas ce format.</p>";
// Méthodes
$mail->AddAddress("formation@cefii.fr", "Vous formateur");
//	var_dump($mail);

/*	vérif envoi de fichier
Joint le fichier à l'email*/
if(isset($_FILES['fichier']) && ($_FILES['fichier']['error'] == 0)) {	
$fichier = $_FILES['fichier']['name'];
$chemin = $_FILES['fichier']['tmp_name'];
$mail->Subject = $fichier;
echo "En pièce jointe le fichier : <strong>\"$fichier\"</strong>";
// Récupère nom et emplacement du fichier
$mail->AddAttachment($chemin,$fichier);
echo "Son emplacement est : $chemin <br />";
}
else {
$mail->Subject = 'Email sans fichier ';
echo "Pas de PJ <br>";
}
$mail->Send();
}
/************* FIN TRY *****************/

/**	Traitement de l’exception relevée en cas d’erreur
du traitement précédent : le (try)*/
catch (Exception $e){
echo 'Message non envoyé ';
echo 'Erreur: ' . $mail->ErrorInfo;
}	
echo "<br><a href='index.html'>Retour au formulaire de contact</a>";
?>

</body>
</html>


J'espère que m'a réponse vous sera utile, attention seul le début du code peu éventuellement être applicable après adaptation du chemin.
Car je n'ai pas vu dans votre tentative d'envoi du mail "pa33" ni de try ni de catch,
Je ne connais pas votre méthode d'envoi alors faite bien attention mon .php
pourrait ne pas vous convenir voir vous compliquer la tâche.
En tout cas je pense qu'il vaut viser src/Exception.php

Régis Chemineau