Bolbo Posté 30 Mars 2006 Posté 30 Mars 2006 Bonjour, Je ne sais pas si c'est le meilleur endroit pour poster ce message, je m'excuse si ce n'est pas le cas. J'esssaie actuellement de créer un fichier .forward qui s'éxécute à la réception d'un mail. Le but: Recevoir des données par mail à l'adresse demo @ example.com et lors de la réception du mail, éxécuter un script qui traitera les données (enregistrement de la base de données, etc ...). J'ai donc créé la boite mail , à la home du nouvel utilisateur ainsi créé j'ai mis un fichier .forward avec les droits 777. Contenu du .forward : |/home/monlogin/public_html/forward/script.php ==> Cette ligne devrait lancer le script script.php à la réception d'un mail à demo @ example.com. Contenu de script.php : #!/usr/bin/php<?php$to="destinataire de test<moi @ example.com>";mail($to,"sujet","mail recu","From:Nom de expediteur<moi @ example.com>\n");?> Script.php est également en chmod 777. Le problème, lorsque j'envoie un mail à demo @ example.com, le script ne se lance pas, je ne suis meme pas sur qu'il soit appelé. Quelqu'un aurait une idée ? Merci d'avance, Bolbo
Bolbo Posté 30 Mars 2006 Auteur Posté 30 Mars 2006 Bonjour, il faut que l'utilisateur de mail (root ou spécifique) ait les droits d'éxécution sur le script. Concernant les droits je pensais à ca également, mais j'ai mis les deux en 777, donc tout le monde devrait pouvoir l'éxécuter en théorie non ? Bolbo
Dan Posté 30 Mars 2006 Posté 30 Mars 2006 Bonjour et bienvenue sur le Hub ! As-tu essayé de lancer ce script en ligne de commande pour t'assurer qu'il tourne correctement ?
Bolbo Posté 30 Mars 2006 Auteur Posté 30 Mars 2006 Bonjour et bienvenue sur le Hub ! As-tu essayé de lancer ce script en ligne de commande pour t'assurer qu'il tourne correctement ? <{POST_SNAPBACK}> Bonjour, Oui, lorsque j'execute le script php php script.php , je recois bien mon mail. A mon avis c'est le .forward qui ne renvoie pas vers mon script, mais je ne vois pas pourquoi. Bolbo
Bolbo Posté 30 Mars 2006 Auteur Posté 30 Mars 2006 Tu utilises quoi ? Sendmail, Qmail/Vpopmail, autre ? <{POST_SNAPBACK}> Sendmail il me semble, envoyé avec la fonction mail de php
f_trt Posté 31 Mars 2006 Posté 31 Mars 2006 (modifié) Bonjour, Oui, lorsque j'execute le script php php script.php , je recois bien mon mail. A mon avis c'est le .forward qui ne renvoie pas vers mon script, mais je ne vois pas pourquoi. Bolbo <{POST_SNAPBACK}> Tu donnes toi même la réponse tu lances php script.php Alors que .forward lance /home/monlogin/public_html/forward/script.php Il faut que tu arrives a lancer par php ton script A+ Modifié 31 Mars 2006 par f_trt
Bolbo Posté 31 Mars 2006 Auteur Posté 31 Mars 2006 Tu donnes toi même la réponse tu lances php script.php Alors que .forward lance /home/monlogin/public_html/forward/script.php Il faut que tu arrives a lancer par php ton script A+ <{POST_SNAPBACK}> Bonjour, En fait lorsque je fais: php /home/monlogin/public_html/forward/script.php en SSH, le mail est envoyé sans problème. Tu saurais comment je peux demander justement dans le .forward de lancer le script en php? MErci d'avance, Bolbo
Bolbo Posté 31 Mars 2006 Auteur Posté 31 Mars 2006 Voila, j'ai eu la solution avec un peu d'aide. En fait le fichier .forward devait contenir : "|/usr/bin/php -q /home/monlogin/public_html/forward/script.php" (avec les guillemets). Et le fichier script.php: <?php$to="destinataire de test<moi @ example.com>";mail($to,"sujet","mail recu","From:Nom de expediteur<moi @ example.com>\n");?> (sans la ligne #!/usr/bin/php). Maintenant il me reste plus qu'à "jouer" avec stdin pour récupérer le texte du mail et de le traiter dans ma base de données. Je mettrais à jour ce post avec le code de traitement, si ca intéresse quelqu'un. Bolbo
Bolbo Posté 31 Mars 2006 Auteur Posté 31 Mars 2006 Donc voila, c'est la version finale du script, avec le forward du mail vers un script et la récupération du contenu du mail avec stdin. Après, on fait ce qu'on veut du contenu, evoi par mail, insertion dans la base de données, ... .forward "|/usr/bin/php -q /home/monlogin/public_html/forward/script.php" avec les guillemets script.php <?php$fd = fopen("php://stdin", "r");$resultat = "";while (!feof($fd))$resultat .= fread($fd, 1024);fclose($fd);//on convertit le quoted-printable en 8 bit(pour les accents et =E9//http://fr3.php.net/manual/en/function.quoted-printable-decode.php$resultat=quoted_printable_decode($resultat);?> Voila voila, si ca peut aider qq1 Merci à ceux qui m'ont aidé et répondu à ce post. Bolbo
glibre Posté 31 Mars 2006 Posté 31 Mars 2006 tres interessant. le tout est de pouvoir "recuperer" les données utiles de l'entete, comme les champs from, to et corps... mais comment, je planche
Bolbo Posté 31 Mars 2006 Auteur Posté 31 Mars 2006 (modifié) le tout est de pouvoir "recuperer" les données utiles de l'entete, comme les champs from, to et corps... mais comment, je planche <{POST_SNAPBACK}> Bonjour Glibre, je suis dessus actuellement, mais le principe est simple. Une fois que tu as récupéré le contenu de ton mail avec stdin, tu obtiens le mail et ses entêtes From ***@example.com Fri Mar 31 13:06:14 2006Return-Path: <***@example.com>X-Original-To: ***@example.comDelivered-To: ***@example.comReceived: from smtp.***.net () by *** (Postfix) with ESMTP id ** for <demo_AT_***.org>; Fri, 31 Mar 2006 13:06:14 +0200 (CEST)Received: from Makalu (*** [IP]) by smtp.***.net (Postfix) with ESMTP id ** for <expediteur_AT_example.com>; Fri, 31 Mar 2006 13:06:14 +0200 (CEST)From: "Moi" <***@example.com>To: <***@example.com>Subject: tesDate: Fri, 31 Mar 2006 13:06:14 +0200Message-ID: <00e201c654b3$****$***@Makalu>MIME-Version: 1.0Content-Type: text/plain; charset="iso-8859-1"Content-Transfer-Encoding: quoted-printableX-Mailer: Microsoft Office Outlook 11X-MimeOLE: Produced By M$crosoft MimeOLE.... Apres, à base d'expreszssions régulières sur le contenu tu retrouve tous ces éléments. J'ai pas encore eu le temps de finir, mais le principe me semble faisable. Bolbo Modifié 31 Mars 2006 par Bolbo
glibre Posté 31 Mars 2006 Posté 31 Mars 2006 oui j'ai un peut le meme genre d'entete je fouine sur comment extraire uniquement les lignes contenant : From: To: Subject: Date:
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant