CMS Automne

Forum de la communauté du CMS Automne
Nous sommes actuellement le Ven Nov 15, 2024 9:54 am

Le fuseau horaire est UTC [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 8 messages ] 
Auteur Message
 Sujet du message: Formulaire et envoi de mail
MessagePublié: Dim Avr 20, 2008 4:16 pm 
Hors-ligne
Utilisateur enthousiaste

Inscrit(e) le : Lun Mars 17, 2008 8:51 pm
Message(s) : 81
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.


Haut
 Profil  
 
 Sujet du message:
MessagePublié: Lun Avr 21, 2008 8:52 am 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
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.


Haut
 Profil  
 
 Sujet du message:
MessagePublié: Mer Avr 23, 2008 9:12 am 
Hors-ligne
Utilisateur enthousiaste

Inscrit(e) le : Lun Mars 17, 2008 8:51 pm
Message(s) : 81
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 :evil:

Autre souci, mon mail Test2 est vide, enfin non, il a un 1 dans le corps du message :shock:

C'est ou la boulette ?

Chrys.


Haut
 Profil  
 
 Sujet du message:
MessagePublié: Mer Avr 23, 2008 2:58 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
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);
...


Haut
 Profil  
 
 Sujet du message:
MessagePublié: Mer Avr 23, 2008 4:06 pm 
Hors-ligne
Utilisateur enthousiaste

Inscrit(e) le : Lun Mars 17, 2008 8:51 pm
Message(s) : 81
Arf ! Ça se complique :twisted:

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 :shock:

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 :shock: :shock: 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.


Haut
 Profil  
 
 Sujet du message:
MessagePublié: Mer Avr 23, 2008 4:34 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
Tu peux m'envoyer ton /html/_2_15_.php par mail que j'y jette un oeil ?


Haut
 Profil  
 
 Sujet du message:
MessagePublié: Mar Avr 29, 2008 8:13 am 
Hors-ligne
Utilisateur enthousiaste

Inscrit(e) le : Lun Mars 17, 2008 8:51 pm
Message(s) : 81
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é :oops: pas encore :wink:
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. :oops:

Chrys.


Haut
 Profil  
 
 Sujet du message:
MessagePublié: Mar Avr 29, 2008 9:40 am 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
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 ...


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 8 messages ] 

Le fuseau horaire est UTC [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 4 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Recherche de:
Aller vers :  
cron
Powered by phpBB® Forum Software © phpBB Group
Traduit par Maël Soucaze et Elglobo © phpBB.fr