CMS Automne http://www.automne-cms.org/forum/ |
|
Formulaire et envoi de mail http://www.automne-cms.org/forum/viewtopic.php?f=2&t=369 |
Page 1 sur 1 |
Auteur: | Chrys [ Dim Avr 20, 2008 4:16 pm ] |
Sujet du message: | Formulaire et envoi de mail |
J'ai réalisé un formulaire avec le module 'Formulaires'. Lorsque je valide mon formulaire dans mon site, j'ai l'erreur suivante : Code : cms_email : sendemail : email was not sent, please check your sendmail configuration or SMTP connection in php.ini
Pour autant, les envois de mail de la page 404 fonctionnent correctement et il me semble que cela utilise la même classe d'envoi de mail Quelqu'un pour m'aider ? Chrys. |
Auteur: | Sébastien [ Lun Avr 21, 2008 8:52 am ] |
Sujet du message: | |
Effectivement il s'agit de la même classe donc je ne comprend pas pourquoi cette différence. Cette erreur est généré suite à l'appel de la fonction mail() de PHP, si l'email part bien, cette fonction renvoie true, sinon false et c'est là que l'erreur est affichée. Donc il faut que tu regarde pourquoi dans un cas cette fonction mail() marche et pourquoi ce n'est pas le cas dans l'autre (l'adresse email destinataire peut avoir une incidence). La configuration se fait dans le php.ini. |
Auteur: | Chrys [ Mer Avr 23, 2008 9:12 am ] |
Sujet du message: | |
Voici le code que j'ai testé : Code : <?php require_once($_SERVER["DOCUMENT_ROOT"]."/cms_rc_frontend.php"); require_once(PATH_PACKAGES_FS."/common/email.php"); $body ="A test mail on your website."; $mail = new CMS_email(); $mail->setSubject("Test1"); $mail->setBody($body); $mail->setEmailFrom("contact@toto.com"); $mail->setEmailTo("me@gmail.com"); if ($mail->sendEmail()) echo 'SUCCESS<br />'; else echo 'FAILED<br />'; //======================================================================================================== $htmlbody ="A test mail on your website."; $htmlmail = new CMS_email(); $htmlmail->setSubject("Test2"); $htmlmail->setBody($htmlbody); $htmlmail->setEmailHTML(true); $htmlmail->setEmailFrom("contact@toto.com"); $htmlmail->setEmailTo("me@gmail.com"); if ($htmlmail->sendEmail()) echo 'SUCCESS<br />'; else echo 'FAILED<br />'; //======================================================================================================== $otherbody ="A test mail on your website. multiline multimultiline "; $othermail = new CMS_email(); $othermail->setSubject("Test3"); $othermail->setBody($otherbody); $othermail->setEmailFrom("contact@toto.com"); $othermail->setFromName("CONTACT"); $othermail->setEmailTo("me@gmail.com"); if ($othermail->sendEmail()) echo 'SUCCESS<br />'; else echo 'FAILED<br />'; //======================================================================================================== $otherhtmlbody ="A test mail on your website. multiline multimultiline "; $otherhtmlmail = new CMS_email(); $otherhtmlmail->setSubject("Test4"); $otherhtmlmail->setBody($otherhtmlbody); $htmlmail->setEmailHTML(true); $otherhtmlmail->setEmailFrom("contact@toto.com"); $otherhtmlmail->setFromName("CONTACT"); $otherhtmlmail->setEmailTo("me@gmail.com"); if ($otherhtmlmail->sendEmail()) echo 'SUCCESS<br />'; else echo 'FAILED<br />'; ?> J'ai masqué volontairement dans ce code les adresses utilisées, en revanche ce sont des adresses valides qui existent et contact@toto.com est bien une adresse mail de mon domaine toto.com (si tant est que cela ait une importance) Voici la réponse : Code : SUCCESS
SUCCESS SUCCESS SUCCESS Hurra !!! Bon ça m'explique pas encore pourquoi mes formulaires n'envoient pas correctement les mails Autre souci, mon mail Test2 est vide, enfin non, il a un 1 dans le corps du message C'est ou la boulette ? Chrys. |
Auteur: | Sébastien [ Mer Avr 23, 2008 2:58 pm ] |
Sujet du message: | |
Demande à ton hébergeur si ils voient passer l'email que tu ne reçois pas (celui emis par le formulaire), ils auront peut-être une explication dans les logs. Pour le fait que ton deuxième test (et le 4ème si tu n'avais pas d'erreur sur le nom de la variable) t'affiche un "1", c'est à cause du : Code : $htmlmail->setEmailHTML(true); Cette méthode (mal nommé c'est un fait mais c'est historique) permet d'insérer du code HTML en plus du code texte brut dans ton email (les deux formats HTML et texte brut sont alors envoyé dans le même email). Donc tu devrais avoir ça à la place : Code : ...
$textbody ="A test mail on your website."; $htmlmail->setBody($textbody); $htmlbody ="<b>html version of the <i>plain text</i> body</b>"; $htmlmail->setEmailHTML($htmlbody); ... |
Auteur: | Chrys [ Mer Avr 23, 2008 4:06 pm ] |
Sujet du message: | |
Arf ! Ça se complique J'ai pris le code du script généré (_2_15_.php) du répertoire /html/. Celui qui contient le fameux formulaire. Je l'ai renommé (en toto.php) et mis à la racine de mon serveur. J'ai enlevé l'entête de redirection. J'ai invoqué le script, affichage du formulaire, submit, et PAF ! ça fonctionne Je suis retourné voir le script de départ (/html/_2_15_.php), l'ai copié et renommé en 2_15_.php, supprimé les entêtes de redirection en le laissant dans le répertoire /html/ Code : //Generated on Wed, 23 Apr 2008 08:39:07 +0200 by Automne (TM) 3.3.1
if (!isset($cms_page_included) && !$_POST && !$_GET) { header('HTTP/1.x 301 Moved Permanently', true, 301); header('Location: http://www.fce-groupebrt.com/web/15-test.php'); exit; } reinvocation, reformulaire, resubmit, et rePAF le mail est parti correctement !!! Donc, ben je ne comprends toujours pas pourquoi mes mails ne partent pas... Est-ce que ça fait avancer le schmilblik ? En fait, je vais creuser au niveau des droits (propriétaire du script initial) ça peut être une bonne piste ça ? Chrys. |
Auteur: | Sébastien [ Mer Avr 23, 2008 4:34 pm ] |
Sujet du message: | |
Tu peux m'envoyer ton /html/_2_15_.php par mail que j'y jette un oeil ? |
Auteur: | Chrys [ Mar Avr 29, 2008 8:13 am ] |
Sujet du message: | |
Bon... La différence entre les scripts qui fonctionnent et ceux qui ne fonctionnent pas réside dans le propriétaire du script. Ceux que je transfert via FTP ont comme propriétaire mon user FTP (ceux qui fonctionnent), ceux générés par Automne on comme propriétaire... nobody ! Et le user nobody ne peut pas forké pour envoyer un mail via la fonction sendmail. Bidouille d'urgence, mise en place d'un script CRON qui change le propriétaire des scripts présents dans le répertoire /web/ Je ne suis pas sur un serveur dédié pas encore Mon hébergeur me propose de passer en suphp... Etant junior, voir novice, pour ne pas dire boulet, sur ces problèmes de conf, un conseil sera le bienvenu. Chrys. |
Auteur: | Sébastien [ Mar Avr 29, 2008 9:40 am ] |
Sujet du message: | |
ok, donc déjà tu dis niet à suphp, ce bazard là est ignoble, ça te divise les perfs de PHP par 20 au moins uniquement pour éviter à ton hébergeur de se fatiguer à te faire une conf propre du serveur. Ensuite, le pb de l'utilisateur incorrect pour les fichiers créés est un pb lié à l'hébergeur. Il devrait être le même que celui du client FTP (ce qui te permet notamment d'avoir le contrôle sur les fichiers créés par apache via le FTP aussi). C'est dans la conf apache qu'il faut modifier cela. Apache devrait tourner avec le même utilisateur que ton compte FTP ou au minimum avec un groupe comprenant ton utilisateur FTP . Typiquement, la conf idéale est la suivante : Imaginons que sur ton serveur tu ai 2 sites : toto.com et tata.com. Tu devrais avoir 3 utilisateurs : - webmaster (ton compte à toi pour accéder à tous les sites du serveur) - toto (un compte te permettant d'avoir un FTP juste pour toto.com) - tata (un compte te permettant d'avoir un FTP juste pour tata.com) Il te faut aussi un groupe d'utilisateurs : www-users qui intègre les 3 utilisateurs : webmaster, toto et tata. Apache pour bien faire doit tourner sur le compte webmaster et sur le groupe www-users. la conf à mettre dans le httpd.conf est dans ce cas : Code : User webmaster
Group www-users ça te permet d'avoir le contrôle sur tous les sites via l'utilisateur webmaster et de ne pas avoir de problèmes de droits entre les fichiers que tu créé via FTP et ceux qu'apache créé (puisque vous employez tous les deux le même utilisateur) et ça permet aux clients d'avoir eux aussi accès via les utilisateurs toto et tata au contenu de leur site en écriture via FTP. C'est la méthode idéale (en place chez quantité d'hébergeur de plus) qui évite tous les soucis. Pour faire propre, il faut ensuite sécuriser l'accès PHP d'un site à l'autre en utilisant le paramètre open_basedir de la conf PHP (via les virtual host d'apache par exemple). Note que tout ceci ton hébergeur devrait le savoir ... |
Page 1 sur 1 | Le fuseau horaire est UTC [Heure d’été] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |