Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/01/2012, 07h45   #1
Invité de passage
 
Homme
Inscription : janvier 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : janvier 2012
Messages : 7
Points : 2
Points : 2
Par défaut [PHPMailer]-Envoi Mail en Localhost?

Bonjours à tous ,


Mise en place et outils :

WampServer en localhost/
phpmailer/
utilisation de Gmail pour tests/(Aucun paramètre n'a été modifié sur ma boite mail)

Alors voila je suis confronté dorénavant à un problème que des milliers d'utilisateurs ont eu ,en ce qui concerne l'envoi tout simple d'Email en local grâce a la fonction $mail en passant par phpmailer.
Il existe des milliers de topics la dessus mais chacun rajoute son avis et a la fin on ne sait plus trop où donné de la tête.

Donc après environ 50 essais différents & des heures et des heures de recherche ,
j’aboutis finalement à ce message d'erreur qui me donne envie de jeter l'ordi par la fenêtre






Configuration Mail.php :


_______________________________________________________________________________________________________

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
 
 
ini_set("max_execution_time", 60);                                                                                       // Suite au message d'erreur j'ai donc modifier le time pour voir si ça passer  ,mais NON
include("C:\wamp\www\site\phpmailer\class.phpmailer.php");                                                 // Appel de mon class.phpmailer
include("C:\wamp\www\site\phpmailer\class.smtp.php");                                                        // Appel de mon class.smtp
 
$mail             = new PHPMailer();
 
 
 
$mail->IsSMTP();
$mail->SMTPAuth   = true;                 
$mail->SMTPSecure = "ssl";                 
$mail->Host       = "smtp.gmail.com";     
$mail->Port       = 465;                   
 
$mail->Username   = "*************"; pour l'instant  sans <a href="mailto:le@gmail.com">le@gmail.com</a>              // Gmail identifiant
$mail->Password   = "*************";                                                           // Gmail mot de passe
 
$mail->From       = "blablabla@googlemail.com";
$mail->FromName   = "blablabla";
$mail->Subject    = "This is the subject";
$mail->AltBody    = "This is the body when user views in plain text format"; 
$mail->WordWrap   = 50; // set word wrap
 
$mail->Body='Voici un exemple d\'e-mail au format Texte';
 
$mail->AddReplyTo("blablabla9@hotmail.fr","");
 
 
 
$mail->AddAddress("blablabla","blablabla");
 
 
 
if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  echo "Message has been sent";
}
 
?>
_________________________________________________________________


Configuration php.ini :



_________________________________________________________________


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[mail function]
; For Win32 only.
; <a href="http://php.net/smtp" target="_blank">http://php.net/smtp</a>
SMTP = "smtp.gmail.com"
; <a href="http://php.net/smtp-port" target="_blank">http://php.net/smtp-port</a>
smtp_port = 465
 
; For Win32 only.
; <a href="http://php.net/sendmail-from" target="_blank">http://php.net/sendmail-from</a>
sendmail_from =
 
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; <a href="http://php.net/sendmail-path" target="_blank">http://php.net/sendmail-path</a>
;sendmail_path =
 
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =
 
; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = "0"
 
; Log all mail() calls including the full path of the script, line #, to address and headers
;mail.log =


J'ai pratiquement tout essayer mais la je suis à cour d'idée...
j'avais trouvé un post de ce type sur le forum mais c'était un autre problème que j'ai déjà eu auparavant c'est pourquoi je me suis permis de recréer une nouvelle discussion.


Merci de votre aide et a bientôt ,

Cordialement Jc Dus 2024
jcdus2024 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 15h52   #2
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Salut,

tu n'as besoin de toucher à la configuration de PHP pour tester l'envoi d'email via gmail, il existe un fichier d'exemple dans le package phpmailer.

Voici un extrait

http://code.google.com/a/apache-extr...l_advanced.php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
<?php
require_once('../class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
 
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
 
$mail->IsSMTP(); // telling the class to use SMTP
 
try {
  $mail->Host       = "mail.yourdomain.com"; // SMTP server
  $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
  $mail->SMTPAuth   = true;                  // enable SMTP authentication
  $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
  $mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
  $mail->Port       = 465;                   // set the SMTP port for the GMAIL server
  $mail->Username   = "yourusername@gmail.com";  // GMAIL username
  $mail->Password   = "yourpassword";            // GMAIL password
  $mail->AddReplyTo('name@yourdomain.com', 'First Last');
  $mail->AddAddress('whoto@otherdomain.com', 'John Doe');
  $mail->SetFrom('name@yourdomain.com', 'First Last');
  $mail->AddReplyTo('name@yourdomain.com', 'First Last');
  $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
  $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
  $mail->MsgHTML(file_get_contents('contents.html'));
  $mail->AddAttachment('images/phpmailer.gif');      // attachment
  $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
  $mail->Send();
  echo "Message Sent OK</p>\n";
} catch (phpmailerException $e) {
  echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
  echo $e->getMessage(); //Boring error messages from anything else!
}
?>
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/01/2012, 18h26   #3
Invité de passage
 
Homme
Inscription : janvier 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : janvier 2012
Messages : 7
Points : 2
Points : 2
bonjour et merci de ta réponse,

Toutefois je rencontre une zone d'ombre en ce qui concerne la ligne 10 et 20

Comment définir ces deux lignes étant donné que le site n'est pas en ligne?
je n'ai pas de nom de domaine et encore moins d'adresse mail associée!
j'ai peu être pas très bien compris le fonctionnement de phpmailer ,je sais pas......

Lorsque j'inscris ligne 10 la meme chose que ligne 14 "smtp.gmail.com" et ligne 20 de nouveau mon adresse mail j'obtiens une erreur de type Fatal error: Call to undefined method PHPMailer::SetFrom()

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
require_once('../class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
 
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
 
$mail->IsSMTP(); // telling the class to use SMTP
 
try {
  $mail->Host       = "mail.yourdomain.com"; //Je suis en localhost.Dois-je donc laisser l'intitulé tel quel ou definir localhost à la place?
  $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
  $mail->SMTPAuth   = true;                  // enable SMTP authentication
  $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
  $mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
  $mail->Port       = 465;                   // set the SMTP port for the GMAIL server
  $mail->Username   = "yourusername@gmail.com";  // GMAIL username
  $mail->Password   = "yourpassword";            // GMAIL password
  $mail->AddReplyTo('name@yourdomain.com', 'First Last');
  $mail->AddAddress('whoto@otherdomain.com', 'John Doe');
  $mail->SetFrom('name@yourdomain.com', 'First Last');//ici quelle adresse dois je rentrer?une adresse differente de ma gmail?Je ne vois pas comment configurer l'adresse d'envoi....
  $mail->AddReplyTo('name@yourdomain.com', 'First Last');
  $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
  $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
  $mail->MsgHTML(file_get_contents('contents.html'));
  $mail->AddAttachment('images/phpmailer.gif');      // attachment
  $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
  $mail->Send();
  echo "Message Sent OK</p>\n";
} catch (phpmailerException $e) {
  echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
  echo $e->getMessage(); //Boring error messages from anything else!
}
?>

de votre aide qui s’avère indispensable.




ps:Sinon existe t'il un autre moyen plus simple pour envoyer un mail en localhost????
jcdus2024 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2012, 16h34   #4
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Citation:
Je suis en localhost.Dois-je donc laisser l'intitulé tel quel ou definir localhost à la place?
oui

Code :
$mail->Host = "localhost";
Citation:
//ici quelle adresse dois je rentrer?une adresse differente de ma gmail?Je ne vois pas comment configurer l'adresse d'envoi....
Tu peux mettre n'importe quelle adresse

Code :
$mail->SetFrom('unautreemail@domain.com', 'Ton Nom');
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2012, 18h09   #5
Invité de passage
 
Homme
Inscription : janvier 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : janvier 2012
Messages : 7
Points : 2
Points : 2
Par défaut Fatal error: Call to undefined method PHPMailer::SetFrom()

Bonjour ,merci encore mais cela ne fonctionne toujours pas.

En effet lorsque j’édite mon code à ligne 10 en tant que "localhost" et à la ligne 20 avec une autre adresse qui m'appartient aussi;
J'ai le message suivant en réponse:

Fatal error: Call to undefined method PHPMailer::SetFrom()....ligne 20!!!Qu'est ce que cela veut dire au juste?

Alors j'ai effectuer une autre série de test:

je sais que vous m'avez signaler que la modification du fichier php.ini n'est pas nécessaire cependant j'ai effectué la chose suivante:


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = "*****" //mon smpt de FAI
; http://php.net/smtp-port
smtp_port = 25 //j'ai laissé le port 25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = "" //mon adresse gmail

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =

Ensuite dans mon fichier php de connexion j'ai remplacé la ligne 10 par: le smtp de mon FAI et j'ai donc supprimé la ligne 20 et 24
Code :
($mail->SetFrom('', ''); et $mail->MsgHTML(file_get_contents('contents.html'));
qui m'affichaient toujours:
Fatal error: Call to undefined method PHPMailer::SetFrom()....ligne 20!!! et
Fatal error: Call to undefined method PHPMailer::SetFrom()....ligne 24!!! lorsque j'avais supprimer au préalable la ligne 20.

C'est alors que j'ai obtenu le message: Message sent Ok.cependant je ne reçois rien dans mes adresses mail .



Je me suis dis que la ligne "set from" n'était pas vraiment importante étant donné que nous pouvions édité n'importe quelle adresse à la place...
La ligne "MsgHTML" m'importe peu aussi car pour l'instant on message n'est pas en html.



Voila suis-je en train de reussir ? Je ne sais pas car j'ai toujours rien dans mes boites email.

J'espere y parvenir bientot.....


Un grand merci à ceux qui m'aide et qui m’aideront à résoudre ce soucis.


Cordialement jcdus 2024
jcdus2024 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 10h19   #6
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Citation:
Fatal error: Call to undefined method PHPMailer::SetFrom()....
Tu as quelle version de phpmailer ? Tu peux toujours télécharger la dernière version sur http://code.google.com/a/apache-extr...downloads/list
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 19h47   #7
Invité de passage
 
Homme
Inscription : janvier 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : janvier 2012
Messages : 7
Points : 2
Points : 2
Bonsoir,


Citation:
Envoyé par Thes32 Voir le message
Tu as quelle version de phpmailer ? Tu peux toujours télécharger la dernière version sur http://code.google.com/a/apache-extr...downloads/list
Alors oui en effet je m'étais aperçu entre temps que ma version était vraiment ancienne,j'ai donc installer la version 5.2.1 .

Bon et maintenant j'ai encore des erreurs(cf ci-dessous) en précisant que mon php_openssl.dll est bien présent dans mon dossier phpmailer.


SMTP -> ERROR: Failed to connect to server: Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP? (53223000)
SMTP Error: Could not connect to SMTP host.

avec


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$mail->Host       = "smtp.gmail.com"; // SMTP server
  $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
  $mail->SMTPAuth   = true;                  // enable SMTP authentication
  $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
  $mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
  $mail->Port       = 465;                   // set the SMTP port for the GMAIL server
  $mail->Username   = "username@gmail.com";  // GMAIL username
  $mail->Password   = "password";            // GMAIL password
  $mail->AddReplyTo('@gmail.com', '@hotmail.fr');
  $mail->AddAddress('@gmail.com', '@hotmail.fr');
   $mail->SetFrom(@gmail.com', ' nom');
  $mail->AddReplyTo('@gmail.com', '@hotmail.fr');
  $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
  $mail->Body = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
 
 
  $mail->Send();
  echo "Message Sent OK</p>\n";
} catch (phpmailerException $e) {
  echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
  echo $e->getMessage(); //Boring error messages from anything else!

mon php.ini est de nouveau vierge ,g effacer toute les données concernant la fonction mail

Code :
1
2
3
4
5
6
7
8
9
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = 
; http://php.net/smtp-port
smtp_port =
; For Win32 only.
; http://php.net/sendmail-from
sendmail_from =
je précise aussi que j'ai modifié le host par
Code :
'ssl://smtp.gmail.com:465'
Doit on aussi paramétrer class.smtp.php????

j'ai rajouter dans mon code php ca ne marche pas non plus............


j'ai aussi lu la plupart des forums et discussions présent via google en essayant une dizaine d'applications possible sans jamais aucun résultat positif avec des erreurs de type :

The following From address failed: .......................
ou bien
SMTP -> ERROR: Failed to connect to server: Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP? (47980120)
SMTP Error: Could not connect to SMTP host.


Est il vraiment possible d'envoyer un mail sans hebergeur???je rappelle que mon site est en aucun cas en ligne.je fonctionne meme avec wamp hors ligne
je me pose des questions car là .............j'ai vraiment tout essayer!!!!!



Merci de votre soutien

Cordialement,

Jcdus2024
jcdus2024 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 18h02   #8
Invité de passage
 
Homme
Inscription : janvier 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : janvier 2012
Messages : 7
Points : 2
Points : 2
Par défaut Probleme resolu

Salut à tous

J'ai résolu mon problème, et oui enfin....
je dois dire que j'ai eu une petite idée bien sympathique aprés des jours et des jours de recherches et de tests inaboutis.

Voila je poste donc une solution qui ne résout pas le problème à proprement dit , mais plutôt le contourne.

En effet j'ai remarqué que les boites e mails sont désormais pas mal protéger au niveau des spams et c'était là peut être mon problème,sans parler des authentifications......

j'ai donc créer une boite mail jetable ,en l’occurrence Yopmail (pour ne pas la citer),insérer le smtp correspondant dans mon php.ini en laissant le port 25 .

avec un script pour l'envoi de mail en php

Code :
1
2
3
4
5
6
7
8
9
10
11
// To
$to = 'votrenom@Yopmail.com';
 
// Subject
$subject = 'test en local envoi mail';
 
// Message
$msg = 'j'ai réussi à envoyer un mail!!!!';
 
// Function mail()
mail($to, $subject, $msg);
Voila j’espère que cela servira car il existe des centaines de personnes qui ont ce problemes mais aucun n'a pensait à ce petit trick!


Cordialement


Jcdus 2024


jcdus2024 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h49.


 
 
 
 
Partenaires

Hébergement Web