Envoyer à un ami

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Faut pas pusher ! S’envoyer une page web sympa repérée sur la machine d’un copain, faire parvenir à un ami le super article qui lui confirme ce dont vous parliez le matin même : c’est toujours utile ! Spip permet de faire ça assez facilement, profitons-en.

Pour envoyer une page web, il n’est pas forcément nécessaire d’envoyer l’intégralité de la page mais seulement le contenu de la page, pour cela il nous faut créer un couple squelettique usuel appelons le mailami.php3/html (cf. pièces jointes).

Il pourra être très inspiré du squelette proposé par ARNO* sur uzine pour le format « imprimable », le but est le même. Mais libre à vous de le modifier à votre guise !

Une fois votre couple squelettique réalisé (dans le fichier joint ce sont les fichiers mailami.php3 et mailami.html), vous allez pouvoir créer deux fichiers php :

-  Le formulaire qui prend les adresses : appelons-le formulaire.php.

Il sera du type :

<form method="post" action="mailarticle.php" enctype="multipart/form-data">
Envoyer l'article &agrave;&nbsp;(entrez l'email du destinataire) :
<br><input name="adresse" size="40" value=""><br>
De la part de&nbsp;(entrez votre email) :
<br><input name="From" size=40 value=""><br>
<center><input type="submit" value="Envoyer"></center>
<input type="hidden" name="id_article" value="<?php echo "$id_article"; ?>">
</form>

C’est un formulaire post classique, qui appelle le script d’envoi du mail que nous détaillerons juste après. Notez le dernier champ : "<?php echo "$id_article"; ?>

, il signifie au formulaire d’envoyer au script non seulement les adresses email qui seront rentrées dans les cases mais également le numéro de l’article demandé. Il nous faudra donc penser à mettre cette valeur dans l’url d’appel au script. Mais l’équipe de spip a pensé à nous car comme pour le couple squelettique imprimer.php3/html il suffira d’utiliser la balise #ID_ARTICLE pour que spip remplace cette balise par sa valeur chiffrée.

Le formulaire est fait, il envoie donc au script de traitement : l’email de l’envoyeur ($From) et l’adresse de celui qui recevra le mail ($adresse) et bien sûr, en caché, $id_article qui est le numéro de l’article.

-  Le formulaire de traitement et d’envoi, appelons le mailarticle.php. Le voici :

<?
$sujet="Le titre de votre message";
$from="From: Ce que vous voulez sauf l'email<$From>\r\n";
$from.="Reply-To: Postmaster <postmaster@votresite.com>\n";
$from.="X-priority:3\n";
$texte="http://www.votresite.com/mailami.php3?id_article=$id_article";
$fr=fopen($texte,"r");
while(!feof($fr)){
   $recup = '';
   while(!feof($fr)){
      $recup .= fgets($fr,1024);
   }
}
fclose($fr);
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";
$msg="$recup";
if (mail($adresse,$sujet,$msg,$from))
echo("<center><font color=\"green\"><br><br><br><h1>Articlebien envoy&eacute;
&agrave; $adresse de votre part ($From)!</h1></font></center>");
else
echo("<center><font color=\"red\"><br><br><br><h1>Probl&egrave;me &agrave;
l'envoi du mail...d&eacute;sol&eacute;</h1></font></center>");
?>

Personnalisez le :
Donnez un sujet, une adresse de retour, mettez les paramètres de VOTRE site.

Voilà l’essentiel est fait, votre script fonctionne.

Voyons maintenant comment intégrer plus joliment cette fonctionnalité à votre page article.html (squelette de votre article) :

Ajoutez simplement cette ligne à l’endroit où vous souhaitez faire apparaître cette fonction (bien sûr il faudra faire une image « envoyer.gif » !) :

<a HREF="#" onClick="window.open('./formulaire.php?id_article=#ID_ARTICLE','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0, width=300, height=300');return(false)"><img src="./images/envoyer.gif" alt="envoyez cet article &agrave; vos amis" border="0"></a>

Le formulaire s’ouvrira alors dans un popup, ce qui est déjà plus esthétique, et signifiera ainsi au visiteur que tout s’est bien passé.

Autre astuce : un script reste un script , il peut y avoir un bug de sécurité, il est toujours intéressant de s’assurer qu’il fonctionne de façon normale en logguant le nombre d’envois et les IP des envoyeurs. Il vous faut alors créer un fichier envoyerami.txt (chmod 755) dans le même répertoire et compléter le script de traitement par ces quelques lignes :

$filename="envoyerami.txt";
$fl=fopen($filename,"a+");
fwrite($fl,"'$REMOTE_ADDR'|'$HTTP_USER_AGENT'|'$id_article'\n");
fclose($fl);

Discussion

36 discussions

  • Bonjour,

    J’ai installé la version HTML du script, et je ne comprends pas trop ce qui se passe... lorsque j’envoie le message vers une adresse que je vérifie sous outlook, tout se passe bien... par contre, si je le vérifie via mon webmail (ifrance), je me retrouve à voir tout le code HTML dans le message... pourtant, mon webmail supporte bien le HTML, puisque je reçois régulièrement des messages au format HTML...

    Problème de header ??

    Merci de votre aide !

    Répondre à ce message

  • 2

    J’y suis presque (avec la 2de version de fichiers), mais j’ai tout de même un petit ennui. Le message reçu affiche tout le code HTML... Donc pas très lisible.
    Que dois-je faire ?

    • OK,
      $from.=« Content-Type : text/html » ;
      dansmailarticle.php3

    • Bonjour,

      J’ai le même pb tout en ayant la ligne que tu signales dans le fichier ($from.=« Content-Type : text/html » ; dans mail article.php ).

      Est-ce que cela pourrait venir du serveur hébergeur ou autres ?

      Si vous avez une idée je suis preneur.

      Merci,

      Michel

    Répondre à ce message

  • 3

    Bonjour,
    je rajoute une pierre à ce forum très fourni :

    je n’arrive pas à faire marcher le script envoyer_ami_texte_2.zip
    sur Online (ça marche chez Nexen et sur Ouvaton)
    message d’erreur : ’Problème à l’envi du mail, désolé’

    Qui a déjà testé ?

    Merci
    Catherine

    • Bonjour,

      Online a désactivé la fonction mail.
      cf :
      http://www.online.net/support/fr/doc/php4/php4_faq.html#4

      Spipement

    • rapide !!

      oui mais il est question dans leur doc (http://www.online.net/support/fr/doc/php/email.html )
      de : Envoyer un mail en PHP3

      ca le fait pas/plus non plus ?

    • Ben a priori si : il faut modifier tous les fichiers du script faisant appel à la fonction mail et la remplacer par email en faisant gaffe à l’ordre dans lequel les paramètres sont passés (j’ai l’impression que c’est le meme ordre mais bon j’en sias rien...).

      Donc tu ouvres les fichiers : t’essaies de remplacer la fonction mail par celle de online, tu enregistres, tu transfer et si ça marche tant mieux :-) tu n’auras plus qu’à proposer ici ton script pour online :-)

      Spipement

    Répondre à ce message

  • 1

    Bonjour,

    Comment fait-on également pour envoyer cette fois une brève... J’ai tenté de remplacer breve par article partout où je pouais mais sans succès...

    Des pistes,

    Merci,

    • Pourtant le principe est le même...ça ne pose pas de problème particulier de reproduire celà pour les auteurs, les breves, les rubriques...

      Où est ce que ça coince ?

    Répondre à ce message

  • Quelqu’un aurait-il des idées pour exploiter les stats (envoyerami.txt) pour afficher les n derniers articles les plus expédiés ?

    Certains sites, comme yahoo exploitent cela.

    Répondre à ce message

  • 9
    asso.bachant

    voici la methode

    -  telechargement du pack
    ENVOYER TOUT L’ARTICLE : Ces fichiers permettent d’envoyer l’article en entier
    Zip - 2.7 ko

    -  mise en place du pack a la racine de mon site

    -  integration dans article de LA petite ligne qui met en place l’icone qui lance la fenetre.

    PAS DE PROBLEME JUSQUE LA

    -  A l’ouverture du popup, j’inscris les adresses e-mail.

    voir ICI

    et la erreur ; POURQUOI ?

    PS/ LE PACK EST BRUT DE SOURCE, aucune modif.

    • Réponse : PARCEQUE.

      Un script ne connaît que les variables que l’on lui donne et dans la page html hors, ton site en spip ne fonctionne pas : il ne donne donc auune variable au script et celui-ci ne peut rien faire....
      D’ailleurs : ton hébergeur supporte t il le php ? J’ai un doute quand je vois le code des balises spip sur les pages de ton site bachant.net

    • asso.bachant

      Un script ne connaît que les variables que l’on lui donne et dans la page html hors, ton site en spip ne fonctionne pas : il ne donne donc auune variable au script et celui-ci ne peut rien faire....

      peux tu s’il te plait préciser car je suis un peu novice, et la ?

      D’ailleurs : ton hébergeur supporte t il le php ? J’ai un doute quand je vois le code des balises spip sur les pages de ton site bachant.net

      je pense que oui , le code te semble bizarre pourquoi ?

      mon hebergeur : PHPNET
      SPIP V7.7B3

    • Je n’avais pas bien regardé : ton site est partiellement sous spip et il y a plein de balsies non interprétés comme #TITRE de ci de là dans ta page ce qui donnait l’impression d’un php non activé mais il l’est puisque de grandes parties sont interprétées.

      Je pense que le problème du script est du même ressort : peux tu me donner une url où la page article ait un lien vers le script de mailing d’article, je ne le vois pas ?

    • asso.bachant

      j’ai telecharger la version

      VERSION HTML : mail envoyé au format HTML, envoie l’url et l’introduction
      Zip - 2.2 ko

      et la j’ai les messages d’erreur suivants

      Warning : fopen() : php_network_getaddresses : getaddrinfo failed : Name or service not known in /home/users/b/bachant/www/mailarticle.php3 on line 8

      Warning : fopen(http://URL_site/mailami.php3?id_article=234) : failed to open stream : No such file or directory in /home/users/b/bachant/www/mailarticle.php3 on line 8

      Warning : feof() : supplied argument is not a valid stream resource in /home/users/b/bachant/www/mailarticle.php3 on line 9

      Warning : feof() : supplied argument is not a valid stream resource in /home/users/b/bachant/www/mailarticle.php3 on line 11

      Warning : fgets() : supplied argument is not a valid stream resource in /home/users/b/bachant/www/mailarticle.php3 on line 12

      etc...............

      POURQUOI , A TOI PARCEQUE , on avance ...

    • Oulala...faut la voir l’icône qui envoie l’article ;-)

      Bon, d’abord je me défausse le script envoyer l’article, ok c’est moi qui l’ai fait MAIS les deux autres packages je ne les ai pas testés ce sont d’autres membres de spip contrib qui ont mis leurs packages.

      Pour ce qui est de ton problème il va te falloir ouvrir mailarticle.php avec un éditeur de texte (notepad puisque tu sembles être ous windows) et changer la ligne 6 :
      $texte="http://www.votresite.com/mailami.php3?id_article=$id_article";
      par :

      $texte="/home/users/b/bachant/www/mailami.php3?id_article=$id_article";

      Là il devrait mieux l’aimer. Tu me dis. a+

    • asso.bachant

      voila le lien est opérationnel, j’ai rajouté la petite phrase qui va bien

      Envoyer à un ami

      ensuite modif ligne

      $texte=« /home/users/b/bachant/www/mailami.php3 ?id_article=$id_article » ;

      je teste : erreur suivante

      Warning : fopen(/home/users/b/bachant/www/mailami.php3 ?id_article=234) : failed to open stream : No such file or directory in /home/users/b/bachant/www/mailarticle.php3 on line 8

      Warning : feof() : supplied argument is not a valid stream resource in /home/users/b/bachant/www/mailarticle.php3 on line 9

      Warning : feof() : supplied argument is not a valid stream resource in /home/users/b/bachant/www/mailarticle.php3 on line 11

      Warning : fgets() : supplied argument is not a valid stream resource in /home/users/b/bachant/www/mailarticle.php3 on line 12

    • asso.bachant

      si je met www.bachant.net, il ne trouve rien

    • bon et bien , je constate que phpnet et out, z’allons voir sur ouvaton.

    Répondre à ce message

  • 8

    Bonjour,
    J’ai installé l’ensemble des pages sur mon site. Cela fonctionne presque...Je reçois effectivement le mail mais je ne reçois pas la page mailami.php3 ?id_article=15 (par exemple) dans le corps du mail.

    Pourtant si j’entre la valeur www.monsite/mailami.php3 ?id_article=15, j’accède bien à la page que l’ami aurait dû m’envoyer...

    Pouvez-vous m’aider ?

    • Bonjour,

      d’abord vérifies que les chemins entre les fichiers soient bons, ensuite vérifies que ton fichier « mailami.php3 ?id_article=15 » donne bien quelque chose en terme de texte dans ton navigateur.

      Si tout est ok, vérifie aussi les «  » que spip peut parfois avoir rajouté dans les url et qui rendent caduque le chemin annoncé.

      Peux tu me donner une url à tester stp ?

    • Lorsque le pop-up avec le formulaire s’ouvre, j’ai comme titre de la fenetre www.monsite.com/formulaire.php3?id_article=blink

      et je reçois dans le corps du mail :

      www.monsite.com/formulaire.php3?id_article=

      Comme si ma variable id_article ne passait pas...??

    • Bon eh bien effectivement il y a un problème sur ton script : si il y a des balises « blink » c’est que spip a trouvé une erreur de code.

      Tu as peut être modifié un peu le script ou la page, non ? Remets les en version originale pour tester (et donne une url stp que je regarde).

    • J’ai replacé les fichiers originaux. J’ai juste modifié la ligne de mailarticle.php3 en mettant l’adresse du site. Le résultat est le même.

      A voir sur www.capmultimedia.com/spip

    • Très joli site :-) vraiment, on s’y croirait. Par contre euh...c’est lourd quand même...m’enfin c’est pour rêver sur les lieux marins alors c’est pas grave ! :-)

      Bon, en fait ton problème il ne vient pas du script mais de ta page article.html, tu demandes à spip de mettre #ID_ARTICLE mais tu n’as pas inclue ta demande dans une boucle article donc ça ne veut rien dire pour spip et il te mets « blink » pour signaler l’erreur.

      Tu as la même erreur pour imprimer.html qui ne recevra pas d’#ID_ARTICLE car il blink de la même façon...

      Moala, ça doit être réglé maintenant.

    • Un grand merci pour la réponse !

    • j’ai pas trop compris....
      J’ai le meme probleme
      qu’est ce que je dois faire exactement ?
      PS:scuse j’suis un newbie...

    • faut juste que tu inclues ton formulaire où tu donnes #ID-ARTICLE entre une balise article ouvrante et fermante :

      <BOUCLE_DOR(ARTICLES){id_article}>
      #ID_ARTICLE
      </BOUCLE_DOR>

    Répondre à ce message

  • 3

    salut,

    j’ai mis en place les scripts que j’ai ,un peu adaptés
    donc je recois bien la page en question le problème, c(est que je ne recoit pas les images.

    si vous pourrier m’éclairer...

    ps : dans mon sie vous cliquer sur une formation et pour envoyer l’email à l’ami vous cliquez sur l’enveloppe de la popup

    • Salut rach,

      j’ai été voir l’url que tu donnes mais en fait..le script n’y est pas ou plutôt tu as dû le modifier non ?

      Pour que les images soient dans le mail reçu, il faut que tu donnes un basehref dans les meta de ta page html comme indiqué dans le texte :-)

    • oui mai ou placer cette balise meta

      voila j’ai placer la balise meta basehref="http://www.univ-valenciennes.fr/ISTV/pageweb/" avant la balise /head mais bon je ne suis pas sur ..

    • dans le script non modifié c’est dans l’entete de la page mailami.html que tu as remplacée par je ne sais pas quelle page ;-)

    Répondre à ce message

  • 2

    Bonjour,

    Apres avoir effectué l’envoi, j’obtient ce message d’erreur..

    Warning : Failed to Connect in c :\program files\easyphp\www\monsite\mailarticle.php on line 18

    Problème à l’envoi du mail...désolé

    Je suis en local avec easyPHP, les test doivent ils s’effectuer obligatoirement en ligne ou y a t il une autre raison ?

    • Salut Dany,

      effectivement le mail ne part pas par magie mais grâce à l’utilisation d’un logiciel de messagerie (sendmail sur les pc unix normalement constitués), or le pc sous windows « de base » n’a pas de serveur de messagerie donc en local le script ne fonctionnera pas.

      Amicalemeny

    • boogieplayer

      Bien sûr que si ;-) Avec easyphp, on peut envoyer des mails en local, pour tester la fonction mail()

      Il faut renseigner le serveur smtp à utiliser pour l’envoi des messages -> éditer le fichier de configuration de PHP (Menu « Configuration/PHP ») et rechercher la chaine « SMTP ».
      Et Préciser le smtp a utiliser au lieu de ’localhost’ (typiquement, utilisez le SMTP de votre FAI). Par exemple ’smtp.wanadoo.fr’

      N’oubliez pas d’arrêter les services pour accéder au menu ;-)

    Répondre à ce message

  • 1

    Bonjour @ Ts,

    Voici mon probleme :

    Fatal error : Maximum execution time of 10 seconds exceeded

    Qlq1 peut il m’aider ?? ;)

    • Désol Léo mais lycos n’est pas un hébergeur sérieux et vu le foutoir de scripts enchevétrés qui se mèlent sur ton site (que je n’arrive même pas à afficher de façon lisible sur aucun navigateur mac) je pense que ton problème de script n’en est pas vraiment un...
      Mon conseil :
      -  Tu muris ton projet internet
      -  Tu dépenses un minimum en fonction de tes besoins
      -  Et enfin tu reviens reposer la même question :-) je t’aiderai, promis !

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom