[PLUGIN] superContact : Formulaire de contact personnalisé

2

Réponses

  • DanDan Member
    avril 2014 modifié
    Bonjour,

    sur mon hébergeur gratuit (Free), quand le mail ne part pas, il n'y a pas de délai de traitement ...
    Quand ça fonctionne, il y a un petit délai d'environ 2 seconde
    Comment pourais je mettre ce petit timer, qui s'il n'est pas validé, envoie le message de la page d'erreur ?

    J'ai trouvé ce code mais ou le placer dans la fonction mail de ce script superContact ?
    Merci pour ce script et pour PluXml, vraiment formidable
    [== PHP ==]
    <?php
    /** Nouvelle fonction mail pour le FAI Free, conforme au standard
    *De temps en temps les courriels ne sont pas envoyés, mais pourtant la fonction mail() renvoie True
    *ce qui n'est pas conforme a la spécification PHP de cette fonction.
    *De manière empirique, il a été déterminée qu'un temps d'envoi au moins égal à 2 secondes est une garantie que le courriel
    *est vraiment envoyé.
    *Si le mail est vraiment envoyé, une notification de rejet est bien envoyé par Free à l'adresse de l'expéditeur du message
    *Copyright 2013 - a@a.a <tmp12311@free.fr>
    *Licence : CeCILL-B, http://www.cecill.info
    *Merci à Gaming Zone <http://gaming.zone.online.fr> pour ses tests ayant permis de déterminer la durée
    * */
    function mailFree($to , $subject , $message , $additional_headers=null , $additional_parameters=null) {
    $start_time = time();
    $resultat=mail ( $to , $subject, $message, $additional_headers, $additional_parameters);
    $time= time()-$start_time;
    return $resultat & ($time>1);
    }
    /** Fin de la définition de la fonction*/
    ?>
    
  • bonjour
    pas essayé, mais je mettrais ce code dans un fichier placé dans le même répertoire que superContact.php & form.contact.php, par exemple plugins/superContact/mailFree.php

    dans dans plugins/superContact/form.contact.php, vers la ligne 167, remplacer:
    [== PHP ==]
    		if(!$error) {
    			if(plxUtils::sendMail($nom_expediteur,$mail,$plxPlugin->getParam('email'),$plxPlugin->getParam('subject'),$rajout,'text',$plxPlugin->getParam('email_cc'),$plxPlugin->getParam('email_bcc')))
    				$success = $plxPlugin->getParam('thankyou');
    			else $error = $plxPlugin->getLang('L_ERR_SENDMAIL');
    
    
    par ce code:
    [== PHP ==]
    		if(!$error) {
    			include_once (__DIR__.'/mailFree.php');
    			if ( mailFree( $plxPlugin->getParam('email'),$plxPlugin->getParam('subject'),$rajout) ) $success = $plxPlugin->getParam('thankyou');
    				//email_cc & email_bcc non pris en compte pour un premier essai
    			else $error = $plxPlugin->getLang('L_ERR_SENDMAIL');
    		}
    
    
    si ça fonctionne, je regarderais comment utiliser: $plxPlugin->getParam('email_cc')."\n".$plxPlugin->getParam('email_bcc')
    je testerais comme paramètre $additional_headers, j'imagine, à tester sur free.
  • DanDan Member
    avril 2014 modifié
    Merci "Kyodev"
    Je vais essayer ton code pour l'insertion dès que possible et je reviens avec des nouvelles
    Il faut bien entendu que je tombe sur la période ou le serveur de mail n'envoie rien (mais sans signaler d'erreur), aléatoirement.

    A++
    Dan

    EDIT :
    Bon zut
    j'ai bien tout vérifié mais j'ai ça :
    Fatal error: Call to undefined function mailFree() in (suivi de l'adresse)
  • tu as bien mis la ligne?:
    include_once (__DIR__.'/mailFree.php');

    et dans le fichier mailFree.php, le code que tu as indiqué, contenant la fonction mailFree?
  • StéphaneStéphane Member, Former PluXml Project Manager
    Attention __DIR__ n'est connu qu'à partir de php 5.3.0
    Si ta version de php est inférieure utilise plutôt
    include_once(dirname(__FILE__).'/mailFree.php');
    

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • DanDan Member
    avril 2014 modifié
    Ok, ça a résolu le problème, effectivement le serveur est en version 5.1.3RC4-dev

    Et le timer semble bien fonctionner, j'ai eu une première page d'erreur car la fonction mail n'a pas été traitée convenablement (affichage très rapide), puis en réessayant une seconde fois, le formulaire a bien été traité, et m'est parvenu :)

    Par contre je n'ai plus le même charset et les accents ne passent plus correctement ...
    Content-Type: text/plain; charset="iso-8859-1"
    Content-Transfer-Encoding: quoted-printable

    AVANT :
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: 8bit


    J'aimerai bien cependant implanter une fonction de sauvegarde des mails sur le serveur, j'ai une ancienne version de PluXml qui a cela, et un site qui tourne dessus, et c'est très très pratique : Je retrouve en ligne tous les mails transmis depuis des années, sagement rangés dans un dossier (et notamment ceux qui ne sont jamais partis par malfonction du serveur de mail) :)

    Merci encore,
    ... et j'apprends petit à petit.
  • >5.1.3RC4-dev
    vivement les pages persos Révolution :)

    @Dan
    je ne sais pas ce que free accepte comme $additional_headers, $additional_parameters...
    peut-être essayer en passant à mailFree
    $additional_headers="Content-Type: text/plain; charset=\"UTF-8\"\nContent-Transfer-Encoding: 8bit\n"
    

    > j'ai une ancienne version de PluXml qui a cela, et un site qui tourne dessus, et c'est très très pratique :
    > Je retrouve en ligne tous les mails transmis depuis des années, sagement rangés dans un dossier
    si tu as un ancien fichier à m'envoyer, j'aimerai bien m'en inspirer car c'est une fonctionnalité nécessaire pour moi, free ou autres, je ne fais guère confiance aux envois via mail(), car même si ça part bien des hébergeurs, ça peut-être aussi blacklisté côté destinataires.

    @Stéphane
    Quelle est la version php5 minimale requise pour pluXml?
  • Bonjour,

    un petit bug avec l'archive zip du plugin, lorsqu'on utilise le plugin MyPluginDownloader et qu'on télécharge l'archive son contenu est extrait à la racine du répertoire /plugins et non pas dans son répertoire plugins/superContact.

    Sur ce… je vais tester, car j'étais justement en train de chercher un formulaire un peu plus évolué.
    Un petite question car je ne sais pas si ça vient du fait que j'utilise (pour l'instant) ssmtp sur le serveur ou si c'est un fonctionnement normal de plxMyContact, l'expéditeur (From) du mail est l'user unix du serveur web, et non pas l'email renseigné dans le formulaire, normal ?
  • bonjour,
    à priori c'est programmé pour utiliser le nom et le mail du formulaire
    plxUtils::sendMail($nom_expediteur,$mail,...
    public static function sendMail($name, $from,...
  • Oui, d'après le code ça devrait être les info renseigné dans le from. Mais ces infos sont dans le Reply-To, le from quant-à lui est sur l'user du serveur Web.
    Je vais essayer en installant Postix, ou en utilisant sendmail-submit pour voir si ça ne viendrait pas de ssmtp.
    Le serveur web tournant dans une jail FreeBSD je n'avais (à priori) pas besoin de MTA.
  • StéphaneStéphane Member, Former PluXml Project Manager
    gegeweb a écrit:
    Un petite question car je ne sais pas si ça vient du fait que j'utilise (pour l'instant) ssmtp sur le serveur ou si c'est un fonctionnement normal de plxMyContact, l'expéditeur (From) du mail est l'user unix du serveur web, et non pas l'email renseigné dans le formulaire, normal ?
    ça vient du paramètrage de ton serveur mail. J'ai déjà constaté ce phénomène chez certains hébergeurs et impossible de passer outre à partir du code php. Si tu as la main sur la config de ton serveur tu devrais pouvoir changer ça. Je ne me rappelle plus en revanche à quel endroit ça se configure (pour apache)

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Stéphane a écrit:
    ça vient du paramètrage de ton serveur mail. J'ai déjà constaté ce phénomène chez certains hébergeurs et impossible de passer outre à partir du code php. Si tu as la main sur la config de ton serveur tu devrais pouvoir changer ça. Je ne me rappelle plus en revanche à quel endroit ça se configure (pour apache)

    OK, donc ça vient de ssmtp. Qui est très limité niveau paramètre à ce niveau.
    Je vais donc devoir installer Postfix sur le serveur. Sauf si je me rappelle comment configurer sendmail-submit. ;-)

    Sinon je n'utilise pas Apache mais Nginx, et je ne pense pas que ça ai une incidence là dessus.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Regarde également dans le php.ini car je ne sais plus si le paramètre était au niveau de apache ou de php

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Stéphane a écrit:
    Regarde également dans le php.ini car je ne sais plus si le paramètre était au niveau de apache ou de php

    Alors visiblement, ça viendrait du Safe Mode activé :
    http://www.php.net/manual/fr/features.safe-mode.functions.php

    mail() : Si le Safe Mode est actif, le 5ème paramètre est désactivé (note : uniquement affecté depuis PHP 4.2.3)
  • le 5e paramètres concerne des paramètres additionnels (X-mailer:, X-ceQueJeVeux: par exemple). le 4e paramètre les headers supplémentaires permettent de manipuler From. exemple sendMail dans class.utils:
    $headers = "From: ".$name." <".$from.">\r\n";
    $headers .= "Reply-To: ".$from."\r\n";
    ...
    return mail($to, $subject, $body, $headers);
  • gegewebgegeweb Member
    avril 2014 modifié
    Bonjour,

    alors pour mon soucis de from, ça venait bien de ssmtp, et même comportement avec sendmail-submit.
    Je viens d'installer Postfix, et le from est bien celui fixé dans les formulaires des deux plugins contact.
    Par contre le Return-Path reste fixé sur l'user système qui envoie le mail.

    À noter qu'il n'y a pas besoin de démarrer le service Postfix pour pouvoir envoyer le mail.
    Il faut évidement (sous FreeBSD) activer Postfix dans mailer.conf pour remplacer la commande sendmail (pareil avec ssmtp d'ailleurs).
  • DanDan Member
    mai 2014 modifié
    Kyodev a écrit:
    >5.1.3RC4-dev
    vivement les pages persos Révolution :)

    @Dan
    je ne sais pas ce que free accepte comme $additional_headers, $additional_parameters...
    peut-être essayer en passant à mailFree
    $additional_headers="Content-Type: text/plain; charset=\"UTF-8\"\nContent-Transfer-Encoding: 8bit\n"
    

    > j'ai une ancienne version de PluXml qui a cela, et un site qui tourne dessus, et c'est très très pratique :
    > Je retrouve en ligne tous les mails transmis depuis des années, sagement rangés dans un dossier
    si tu as un ancien fichier à m'envoyer, j'aimerai bien m'en inspirer car c'est une fonctionnalité nécessaire pour moi, free ou autres, je ne fais guère confiance aux envois via mail(), car même si ça part bien des hébergeurs, ça peut-être aussi blacklisté côté destinataires.

    @Stéphane
    Quelle est la version php5 minimale requise pour pluXml?

    Merci encore Kyodev, ça marche parfaitement avec les accents en rajoutant tes paramètres dans l'entête :)
    Cette fonction timer fiabilise l'envoi des mails par Free, si le mail n'est pas traité (trop rapide), la page d'erreur s'affiche :)

    EDIT : il y a par contre un autre soucis : l'adresse mail d'envoi est toujours celle de l'hébergeur (Free), et pas celle laissée sur le formulaire :(
  • MrFoufouMrFoufou Member
    août 2014 modifié
    Bonjour,
    Merci pour ce plug-in,
    Petit soucis quand j'essaye de modifier l'ordre des champs du formulaire : mettre la question personnalisée après le motif et le message par exemple.
    J'ai inversé les champs dans form.contact.php mais plus rien ne s'affiche au final. Il faut faire autre chose ?
  • Salut à tous,

    Serait ce possible aussi d'avoir la possibilité d'ajouter une question et avoir la réponse en plusieurs choix, par bouton cliquable ? C'est à dire comme un QCM ?

    Du genre comme un sondage ?

    Merci ! ;)
  • noogatynoogaty Member
    février 2015 modifié
    Personne pour m'aider ? :(

    [Edit : problème réglé avec l'aide de Stéphane ici : http://forum.pluxml.org/viewtopic.php?id=4936]
  • chrisschriss Member
    Bonjour,
    je teste actuellement ce plugin et il manque un 'type="text" ' dans le input de skype
    [== PHP ==]
    <input id="skype" name="skype" tabindex="7" size="30" <?php ....
    
    Il serait bien de le rajouter, certain framework CSS en ont besoin, tel que SKEL.CSS, comme dans cet exemple
    [== CSS ==]
    input[type="text"],
    input[type="password"],
    input[type="email"],
    input[type="url"],
    input[type="tel"],
    select,
    textarea {
        display: block;
        padding: 0 1em;
        width: 100%;
        outline: 0;
        border: solid 1px rgba(255, 255, 255, 0.3);
        border-radius: 4px;
        background: transparent;
        color: inherit;
        text-decoration: none;
        transition: border-color 0.2s ease-in-out;
        appearance: none;
    }
    
    
  • bg62 a écrit:
    super ce contact :)
    mais serait-il possible de :
    ( si j'ai bien compris )
    - le plugin initial crée une page dont l'url est php?contact
    - celui-ci : comment faire pour qu'il crée un page 'Contact Pro', par exemple, vers une url php?contact-pro
    de manière à pouvoir conserver les 2 plugins et s'en servir selon le besoin de l'utilisateur ?
    @+
    si je pouvais avoir 'une' solution ce serait 'top' depuis le temps :)
    @+
  • Bonsoir, quelqu'un as-t-il mis a jour supercontact pour la version 5.5 . merci par avance.
    j'ai cette erreur:
    Notice: Undefined variable: site in C:\wamp\www\pluxml5.5\plugins\superContact\form.contact.php on line 230 Call Stack #TimeMemoryFunctionLocation 10.0008154072{main}( )..\index.php:0 20.07291887208include( 'C:\wamp\www\pluxml5.5\themes\defaut\static.php' )..\index.php:55 30.09101914288plxShow->staticContent( )..\static.php:21 40.09312056024require( 'C:\wamp\www\pluxml5.5\plugins\superContact\form.contact.php' )..\class.plx.show.php:1471 " />
  • bg62bg62 Member
    re .... je viens de retester sous la release "5.6" et cela ne fonctionne pas ...
    Comment faire donc ?
    @+
  • bg62 a écrit:
    re .... je viens de retester sous la release "5.6" et cela ne fonctionne pas ...
    @+

    Hello Bg62

    Je suis en train de le tester sur la 5.6 avec Version de PHP : 5.5.38 et cela fonctionne.
  • Bonjour,

    ça marche pas pour moi en 5.6 :(

    que faire ???
  • @jack31
    Bonjour à toi :)
    Lorsque l'on clique sur ' Lire la suite ' on est redirigé vers " http://www.lamaisondunet.org/article7/vous-voulez-vendre-de-l-hebergement " .... une page en erreur et donc introuvable !!! bon courage pour la correction :)
    @mitiés
    bg
    + j'ai voulu mettre ceci sur ton site ( dans les commentaires du dernier article actuel = vérification antispam en erreur sans arrêt )
  • abdelkader a écrit:
    Bonjour,

    ça marche pas pour moi en 5.6 :(

    que faire ???
    Nous en dire plus parce que là c'est vraiment sibyllin comme message...
  • bg62 a écrit:
    @jack31
    Bonjour à toi :)
    Lorsque l'on clique sur ' Lire la suite ' on est redirigé vers " http://www.lamaisondunet.org/article7/vous-voulez-vendre-de-l-hebergement " .... une page en erreur et donc introuvable !!! bon courage pour la correction :)
    @mitiés
    bg
    + j'ai voulu mettre ceci sur ton site ( dans les commentaires du dernier article actuel = vérification antispam en erreur sans arrêt )

    @ Houps !

    Je viens de laisser tomber ce nom de domaine et je ne sais même plus de qul site sous Pluxml il s’agit. il y en a tant. ;)

    Où as-tu trouvé ce lien ?
  • Bonjour à tous,

    Je cherche un lien ou l'archive de ce plugin. Quelqu'un peu m'aider ?
    Merci. :)

    Cordialement,
    DPFPIC
Connectez-vous ou Inscrivez-vous pour répondre.