Bonjour,
J'ai un souci, je crois avoir une fois vu sur le site du framework un tutoriel pourtant sur l'envoi d'email automatique. Aujourd'hui j'y retourne, je cherche, rien de ce genre.
Quelqu'un peut-il m'indiquer le lien s'il existe encore?
Merci
Bonjour,
J'ai un souci, je crois avoir une fois vu sur le site du framework un tutoriel pourtant sur l'envoi d'email automatique. Aujourd'hui j'y retourne, je cherche, rien de ce genre.
Quelqu'un peut-il m'indiquer le lien s'il existe encore?
Merci
L'envoi d'email en automatique ? c'est à dire ?
il y a un plugin_mail pour envoyer les mails, mais je ne vois pas le coté "automatique"
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Oui justement, n'y a t-il pas un tutoriel pour montrer comment utiliser ce plugin?il y a un plugin_mail pour envoyer les mails
Ah oui, ça manque en effet,
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 $sSubject=_root::getParam('sujet'); $sFrom=_root::getParam('email'); $sFromLibelle=_root::getParam('nom'); $sBody=_root::getParam('CorpMessage'); $oPluginMail=new plugin_mail(); $oPluginMail->setFrom($sFromLibelle,$sEmailFrom); $oPluginMail->addTo($EmailDestinataire); $oPluginMail->addTo($sTo); $oPluginMail->setSubject( $sSubject ); $oPluginMail->setBodyHtml( $sBody ); $oPluginMail->send();
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Il y a cette partie que je ne comprend pas. Ces variables proviennent d'ou et que doivent-elle contenir?
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $oPluginMail->setFrom($sFromLibelle,$sEmailFrom); $oPluginMail->addTo($EmailDestinataire); $oPluginMail->addTo($sTo);
Ce sont vos variables
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $sFrom='Moi'; $sEmailFrom='moi@email.com'; $EmailDestinataire='emailDestinataire@domain.com'; $oPluginMail->setFrom($sFromLibelle,$sEmailFrom); $oPluginMail->addTo($EmailDestinataire);
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
J'ai testé, j'ai fais un formulaire pour recevoir les informations mais je ne reçois pas le mail à l'adresse indiquée en destination.
Vous avez un serveur mail d installé ? (potsfix par exemple)
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Oui je suppose! J'utilise XAMPP et j'ai démarré Mercury. En plus dans le fichier 'php.ini' d'Apache j'ai configuré le serveur Mercury en décommentant ainsi:J'ai refait le test mais toujours pas de mail reçu à l'adresse de destination. Voici un peu mon code:[mail function]
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
SMTP = localhost
smtp_port = 25
Mon main (module contacts même si je n'ai pas de table 'contact' dans ma base):et la vue:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
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
44
45
46
47
48
49 public function _new(){ $tMessage=$this->processSave(); $oDivers=new row_divers; $oView=new _view('contacts::new'); $oView->oDivers = $oDivers; $oPluginXsrf=new plugin_xsrf(); $oView->token=$oPluginXsrf->getToken(); $oView->tMessage=$tMessage; $this->oLayout->add('main',$oView); $this->oLayout->title="Nous contacter"; } private function processSave(){ if(!_root::getRequest()->isPost() ){ //si ce n'est pas une requete POST on ne soumet pas return null; } $oPluginXsrf=new plugin_xsrf(); if(!$oPluginXsrf->checkToken( _root::getParam('token') ) ){ //on verifie que le token est valide return array('token'=>$oPluginXsrf->getMessage() ); } $sFromEmail=_root::getParam('email'); $sFromIdentite=_root::getParam('nom').' '._root::getParam('prenom'); $sSubject=_root::getParam('sujet'); $sBody=_root::getParam('message'); $EmailDestinataire='toto@yahoo.fr'; $oPluginMail=new plugin_mail(); $oPluginMail->setFrom($sFromIdentite,$sFromEmail); $oPluginMail->addTo($EmailDestinataire); $oPluginMail->setSubject( $sSubject ); $oPluginMail->setBodyHtml( $sBody ); if($oPluginMail->send()){ _root::redirect('contacts::index'); //return array('token'=>'Message envoyé' ); } }Y a t'il une chose que j'aurais dû configurer en plus? Le tutoriel sur l'utilisation de ce plugin serait une valeur ajoutée pour le framework.
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
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
44
45
46
47
48
49 <?php $oForm=new plugin_form($this->oDivers); $oForm->setMessage($this->tMessage); ?> <form action="" method="POST" > <fieldset style="width:90%"> <legend> Contact</legend> <table> <tr> <td>Votre E-mail :</td> <td><input type="text" id="email" name="email" size="40" autocomplete="off"/></td> </tr> <tr> <td>Votre Nom :</td> <td><input type="text" name="nom" size="40" /></td> </tr> <tr> <td>Votre Prénom :</td> <td><input type="text" name="prenom" size="40" /></td> </tr> <tr> <td>Sujet du message :</td> <td><input type="text" name="sujet" size="40" /></td> </tr> <tr> <td>Votre message :</td> <td><textarea name="message" cols="40" rows="6" ></textarea></td> </tr> <tr> <td></td> <td> <p> <input type="reset" name="reinitialiser" value="Reinitialiser" /> <input type="submit" name="valider" value="Envoyer" /> </p> </td> </tr> </table> <?php echo $oForm->getToken('token',$this->token)?> </fieldset> </form> <script language="javascript"> function loadFocus(){ document.getElementById('email').focus(); } window.onload = loadFocus; </script>
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
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
44
45
46
47
48
49
50
51
52
53
54 public function _new(){ $tMessage=$this->processSave(); $oDivers=new row_divers; $oView=new _view('contacts::new'); $oView->oDivers = $oDivers; $oPluginXsrf=new plugin_xsrf(); $oView->token=$oPluginXsrf->getToken(); $oView->tMessage=$tMessage; $this->oLayout->add('main',$oView); $this->oLayout->title="Nous contacter"; } private function processSave(){ if(!_root::getRequest()->isPost() ){ //si ce n'est pas une requete POST on ne soumet pas return null; } $oPluginXsrf=new plugin_xsrf(); if(!$oPluginXsrf->checkToken( _root::getParam('token') ) ){ //on verifie que le token est valide return array('token'=>$oPluginXsrf->getMessage() ); } $sFromEmail=_root::getParam('email'); $sFromIdentite=_root::getParam('nom').' '._root::getParam('prenom'); $sSubject=_root::getParam('sujet'); $sBody=_root::getParam('message'); $EmailDestinataire='toto@yahoo.fr'; $oPluginMail=new plugin_mail(); $oPluginMail->setFrom($sFromIdentite,$sFromEmail); $oPluginMail->addTo($EmailDestinataire); $oPluginMail->setSubject( $sSubject ); $oPluginMail->setBodyHtml( $sBody ); if($oPluginMail->send()){ print "Email envoye : OK"; //_root::redirect('contacts::index'); //return array('token'=>'Message envoyé' ); } var_dump($oPluginMail); exit; }
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Vous avez raison, je note de rajouter un tuto sur l'envoi de mail
note: l'adresse toto@yahoo.fr existe vraiment ? (étonné qu'elle soit dispo
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
non c'est juste une fausse adresse mise pour le post; dans mon code il y a une vraie adresse valide.
Vous avez essayer avec le code modifié, affichant le status et le var_dump ?
pensez à anonymiser le var_dump en ce qui concerne les adresses email
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Oui j'ai testé avec les modifications: voici ce qu'il en ressort:
Toujour rien de reçu.Email envoye : OKobject(plugin_mail)#8 (11) { ["sFrom":"plugin_mail":private]=> string(34) "xxx@gmail.com" ["sFromLibelle":"plugin_mail":private]=> string(8) "MOI Titi" ["tTo":"plugin_mail":private]=> array(1) { ["yyy@yahoo.fr"]=> string(18) "yyy@yahoo.fr" } ["tCC":"plugin_mail":private]=> NULL ["sBCC":"plugin_mail":private]=> NULL ["sTitle":"plugin_mail":private]=> string(7) "Plainte" ["sBody":"plugin_mail":private]=> NULL ["sBodyHtml":"plugin_mail":private]=> string(23) "je ne suis pas contente" ["sAttached":"plugin_mail":private]=> NULL ["sErrors":"plugin_mail":private]=> NULL ["sWall":"plugin_mail":private]=> string(41) "afdsfdsfsqhghregregftervgqrdgregregfdgdfd" }
Je vois bien le OK, donc la fonction a retourne ok
vous avez des logs sur votre serveur de mail pour regardé
1. si il a recu le mail à envoyer
2. quel status il lui a mis
on peut etre dans le cas d'un mail qui passe directement en spam
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
j'ai vérifié ce n'est pas passé en spam.on peut etre dans le cas d'un mail qui passe directement en spam
En ce qui concerne les logs de Mercury, dans Xampp->Mercury->LOGS il y a un fichier log. Voici tout ce qu'il contient:
Je ne vois pas les mails envoyés. Est-ce bien ici que je dois regarder?T 20150927 171021 56068cde Connection from 127.0.0.1
T 20150927 171021 56068cde EHLO localhost
T 20150927 171021 56068cde MAIL FROM:<do.not@reply.me>
T 20150927 171021 56068cde RCPT TO:<benjamin.balet@gmail.com>
E 20150927 171021 56068cde Relay attempt by 127.0.0.1: from <do.not@reply.me> to <benjamin.balet@gmail.com>.
T 20150927 171021 56068cde QUIT
T 20150927 171021 56068cde Connection closed with 127.0.0.1, 0 sec. elapsed.
Apparement c'est bien passé par votre serveur email
Essayez avec cette classe qui contient une petite modification qui pourrait le faire passer en spam, ou carrément bloqué en amont
Remplacez le code de votre classe plugin_mail.php
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175 <?php /* This file is part of Mkframework. Mkframework is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License. Mkframework is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Mkframework. If not, see <http://www.gnu.org/licenses/>. */ /** * plugin_auth classe pour gerer l'authentification * @author Mika * @link http://mkf.mkdevs.com/ */ class plugin_mail{ private $sFrom; private $sFromLibelle; private $tTo; private $tCC; private $sBCC; private $sTitle; private $sBody; private $sBodyHtml; private $sAttached; private $sErrors; private $sWall; public function __construct(){ $this->sWall='afdsfdsfsqhghregregftervgqrdgregregfdgdfd'; $this->sFrom='capa@powernextsa.llg'; $this->sFromLibelle='capa'; } public function setFrom($sFromLibelle,$sFrom){ $this->sFrom=$sFrom; $this->sFromLibelle=$sFromLibelle; } public function addTo($sTo){ $this->tTo[$sTo]=$sTo; } public function addCC($sCC){ $this->tCC[$sCC]=$sCC; } public function setBcc($sBCC){ $this->sBCC=$sBCC; } public function setTitle($sTitle){ $this->sTitle=$sTitle; } public function setSubject($sTitle){ $this->sTitle=$sTitle; } public function setBody($sBody){ $this->sBody=$sBody; } public function setBodyHtml($sBody){ $this->sBodyHtml=$sBody; } public function attachFile($sFile){ $this->sAttached=$sFile; } private function checkEmail($sEmail){ return preg_match('/^([a-zA-Z0-9\-\_\.]*)@([a-zA-Z0-9\-\_\.]*)\.([a-zA-Z]*)$/',$sEmail); } private function isValid(){ $ok=1; $tErrors=array(); if($this->sFrom == ''){ $ok=0; $tErrors[]="Pas d'email from"; }elseif(!$this->checkEmail($this->sFrom)){ $ok=0; $tErrors[]="Mauvais format pour l'email from (".$this->sFrom.")"; } if( count($this->tTo) == 0){ $ok=0; $tErrors[]="Pas d'email to"; }else{ foreach($this->tTo as $sTo){ if(!$this->checkEmail($sTo)){ $ok=0; $tErrors[]="Mauvais format pour l'email to (".$sTo.")"; } } } if($this->sTitle == ''){ $ok=0; $tErrors[]="Pas de sujet"; } if(!$ok){ $this->sErrors="Erreur plugin_mail lors de l envoi de l'email \n"; $this->sErrors.=implode("\n",$tErrors); } return $ok; } public function send(){ if(!$this->isValid()){ throw new Exception($this->sErrors); } $n0="\n"; $r0="\r"; $n=$n0; $nn=$n0.$n0 ; $rn=$r0.$n0 ; $sHeader = 'From: "'.$this->sFromLibelle.'" <'.$this->sFrom.'>'.$n; if($this->sBCC!=''){ $sHeader .= 'Bcc: '.$this->sBCC."\r\n"; } if($this->tCC){ $sHeader .= 'Cc: '.implode(',',$this->tCC)."\r\n"; } $sHeader .= 'Return-Path: <'.$this->sFrom.'>'.$n; $sHeader .= 'MIME-Version: 1.0'.$n; $sHeader .= 'Content-Type: multipart/mixed; boundary="'.$this->sWall.'"'.$rn; $optHeader = '-f'.$this->sFrom.''.$n; $sMsg = ''; if($this->sBody != ''){ $sMsg .= '--'.$this->sWall.$n; $sMsg .= 'Content-Type: text/plain; charset="iso-8859-1"'.$nn; $sMsg .= $this->sBody.$nn; } if($this->sBodyHtml != ''){ $sMsg .= '--'.$this->sWall.$n; $sMsg .= 'Content-Type: text/html; charset="iso-8859-1"'.$nn; $sMsg .= $this->sBodyHtml.$nn; } if($this->sAttached != ''){ $sMsg .= '--'.$this->sWall.''.$n; $sMsg .= 'Content-Type: text/csv; name="'.$this->sAttached.'"'.$n; $sMsg .= 'Content-Transfer-Encoding: base64'.$n; $sMsg .= 'Content-Disposition:attachement; filename="'.$this->sAttached.'"'.$nn; $sMsg .= chunk_split(base64_encode(file_get_contents($this->sAttached)))."\n"; } if( mail( implode(',',$this->tTo),$this->sTitle,$sMsg,$sHeader,$optHeader)){ return true; }else{ return false; } } }
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Aussitôt demandé, aussitôt testé!
J'ai attendu une bonne trentaine de minutes mais toujours pas de mail dans ma boite de destination.
le var dump donne la même chose (sauf les contenus des variables/champs qui ont changés).
Le log de Mercury est le même que celui posté plus haut.
Le problème vient peut etre de mercury
Personnellement je travaille beaucoup/essentiellement sous linux: j'install généralement un postfix sur mes serveurs perso (ovh)
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
D'accord, je vais refaire un test hors du domaine dans lequel je suis actuellement. c'est peut-être là qu'il y a des restrictions.
Merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager