Aller au contenu

Exectuer un script à la réception d'1 mail


Bolbo

Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Bonjour et bienvenue sur le Hub !

As-tu essayé de lancer ce script en ligne de commande pour t'assurer qu'il tourne correctement ?

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Tu utilises quoi ? Sendmail, Qmail/Vpopmail, autre ?

<{POST_SNAPBACK}>

Sendmail il me semble, envoyé avec la fonction mail de php

Lien vers le commentaire
Partager sur d’autres sites

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é par f_trt
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Posté (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 :P

<{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 2006
Return-Path: <***@example.com>
X-Original-To: ***@example.com
Delivered-To: ***@example.com
Received: 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: tes
Date: Fri, 31 Mar 2006 13:06:14 +0200
Message-ID: <00e201c654b3$****$***@Makalu>
MIME-Version: 1.0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
X-Mailer: Microsoft Office Outlook 11
X-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é par Bolbo
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...