OVH Community, votre nouvel espace communautaire.

Fonction mail, un peu d'aide..


joker_vb
16/05/2007, 11h28
Salut,

Pas mieux

J'ai changé le php.ini comme tu me l'as dit Abogil
sendmail_path = smtp.yahoo.fr
ça ne marche toujours pas, j'ai une erreur
Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0
Warning: Unknown: Failed opening '/var/www/mail.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0
Voici le code
Code PHP:
// La variable $verif, va nous permettre d'analyser si la sémantique de l'email est bonne
$verif="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!";

// On assigne et protége nos variables
$votremail=$_POST["votremail"];
$from=htmlentities("From: ".$votremail);
$message=stripslashes(htmlentities($_POST["message"]));

// On met ici notre email
$destinataire="xxxxxxxxx@yahoo.fr";

/* On place le sujet du message qui ici sera toujours le même
puisque dans la partie Html on l'a mis en caché grace au type="hidden";) avec comme valeur "Vous avez un nouveau message"  */
$objet=$_POST['objet'];

// C'est bon on est OK, vérifions si l'email est valide, grâce à notre sympathique REGEX
if(!preg_match($verif,$votremail))
{
        echo 
"Voter email n'est pas valide";
}

// On verifie si il y a un message
elseif (trim($message)=="")
{
        echo 
"Le message n'a pas été entré";
}

// Si tout est OK on envoie l'email
else
{
        
mail($destinataire,$objet,$message,$from);
        echo 
"Message envoyé au webmaster";
}

?>
Pas facile cette histoire...

Abogil
16/05/2007, 07h23
Essaie avec :
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = smtp.yahoo.fr

joker_vb
15/05/2007, 19h17
Salut,

Bon à force de m'arracher les cheveux j'ai une calvitie naissante

Alors voila où j'en suis : j'ai simplifié mon script. Il est scindé en deux, une page html et une php

J'envoie le tout sur mon domaine OVH
je lance la page html, je valide, erreur 500 :
Code:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, tech@ovh.net and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Apache/1.3.37 Server at www.fermedemarigny.com Port 80
Alors je veux m'assurer que mon script fonctionne, mais je ne comprends pas comment faire pour configurer le php.ini

Je l'ai trouvé c'est déjà ça... (/etc/php5/apache2/)
je l'ouvre et je vois ça
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
;sendmail_from = me@example.com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =
que dois faire si je veux envoyer le mail sur une page yahoo

j'écris dedans :
Code PHP:
;smtp.yahoo.fr 
dois je virer d'autres lignes?
Désolé, je ne comprends vraiment pas tout...

Kinoh
15/05/2007, 07h57
Pour ce qui est de tes tests local, n'oubli pas qu'il faut ouvrir le fichier php.ini et configurer le smtp (exemple smtp.free.fr pour free, smtp.wanadoo.fr pour wanadoo..)

Peut être l'as tu déjà fait cela dis.

Ce qui m'étonne c'est que tu n'ai aucun message d'erreur en local, a moins qu'étant redirigé vers une autre page, tu ne le vois pas.

joker_vb
15/05/2007, 00h33
Merci à vous,

Donc en gros tu veux envoyer un mail a postmaster@fermedemarigny.com, et récupérer la valeur du formulaire précédent pour indiquer de qui provient le courrier
Oui exactement, je veux aussi récupérer d'autres valeurs, mais je crois qu'il va falloir commencer par le BA.BA. Que je recoive le mail serait déjà une bonne chose.
tu effectu tes tests en local ou sur ton espace OVH ?
Comme je l'ai dit dans mon premier message j'ai essayé les deux, mais aucun n'a marché. Par contre, en local le code semble s'exécuter correctement puisque je suis bien redirigé sur la page d'accueil, mais le mail n'arrive pas... Depuis www.fermedemarigny.com/reservation.php5 j'ai une erreur 500, Direct!

pourquoi ne pas simplement rajoute dans le corps du message un :
oui, pourquoi pas.

Bon il est tard, alors je vais reprendre tout ça demain à tête reposée. je vais aussi essayer d'envoyer ces éléments à une autre adresse mail pour voir si ça vient d'OVH.

Affaire à suivre (merci pour votre aide)

Kinoh
14/05/2007, 23h16
euh juste comme ça en relisant le sujet initial, pourquoi ne pas simplement rajoute dans le corps du message un :

Code PHP:
$message .= "Adresse eMail du client : ";
$message .= $_POST["email"]; 
et oublier le from? (qui se mettra automatiquement avec la valeur par défaut, sauf erreur de ma part dans la mesure ou mon accés ftp est innaccessible pour le moment j'ai pas put tester le service OVH fraichement acquis )

Après oui faudra copier coller l'email dans le champ TO pour répondre

Kinoh
14/05/2007, 22h57
Donc en gros tu veux envoyer un mail a postmaster@fermedemarigny.com, et récupérer la valeur du formulaire précédent pour indiquer de qui provient le courrier (respectivement champ TO et FROM)

J'ai bricolé ça rapidement, si ça peut t'aider, en gros première page comportant une simple boite texte pour entrer l'email et un bouton pour envoyer.

La seconde page qui n'affiche rien mais envoi un mail.

form.html :
Code PHP:
echo '';
echo 
'';
echo 
'';
?>

mail.php
Code PHP:
$to "email@domaine.tld";
$from '.$_POST["AdrMail"].';
$message "blablabla";
$sujet "Sujet du mail";

mail($to$sujet$message$from);

?>
Après pour ce qui est de l'extension du fichier, j'utilise des .php personnellement, je ne pense pas que cela ai une influence, par contre j'ai crut lire pas mal de post comme quoi la fonction mail avait quelques raté dernièrement, as tu un message d'erreur php ou tout autre message lors de tes tests? tu effectu tes tests en local ou sur ton espace OVH ?

joker_vb
14/05/2007, 22h37
Merci pour ta réponse si rapide.
Code PHP:
 // *** A configurer

   
$to    "Adresse_Mail_Destinataire";  
   
$from  "Adresse_Mail_Contact_site"
j'ai remplacé ainsi, je ne sais pas si c'est correct...
Code PHP:
$to    "postmaster@fermedemarigny.com";  
   
$from  "$_POST['email']"
puisque je récupère cette valeur...

Une chose est certaine ça ne marche toujours pas

J'ai lu dans la faq d'Ovh qu'il fallait nommer le fichier php en .php5, mais ça ne change rien

Abogil
14/05/2007, 22h12
Alors essaye ce petit script :

Code PHP:
   // Test fonction mail();

   // *** A configurer

   
$to    "Adresse_Mail_Destinataire";  
   
$from  "Adresse_Mail_Contact_site";  

   
// *** Laisser tel quel

   
$JOUR  date("Y-m-d");
   
$HEURE date("H:i");

   
$Subject "Test Mail - $JOUR $HEURE";

   
$mail_Data "";
   
$mail_Data .= " \n";
   
$mail_Data .= " \n";
   
$mail_Data .= " Subject  \n";
   
$mail_Data .= " \n";
   
$mail_Data .= " \n";

   
$mail_Data .= "Mail HTML simple  :  $Subject    
 \n"
;
   
$mail_Data .= " \n";
   
$mail_Data .= " \n";

   
$headers  "MIME-Version: 1.0 \n";
   
$headers .= "Content-type: text/html; charset=iso-8859-1 \n";
   
$headers .= "From: $from  \n";
   
$headers .= "Disposition-Notification-To: $from  \n";

   
// Message de Priorité haute
   // -------------------------
   
$headers .= "X-Priority: 1  \n";
   
$headers .= "X-MSMail-Priority: High \n";

   
$CR_Mail TRUE;

   
$CR_Mail = @mail ($to$Subject$mail_Data$headers);
 
   if (
$CR_Mail === FALSE)   echo " ### CR_Mail=$CR_Mail - Erreur envoi mail 
 \n"
;
   else                      echo 
" *** CR_Mail=$CR_Mail - Mail envoyé
 \n"


joker_vb
14/05/2007, 20h56
Salut à tous,

Je fais mes premiers pas en php et j'avoue que je ne capte pas tout

Voila j'ai trouvé un script sur le net et j'ai essayé de l'adapter à mes attentes...

L'idée est de faire un formulaire qui nous permettra de recevoir les demandes de disponibilités des clients potentiels.
Ce formulaire doit donc m'envoyer le mail en conservant l'adresse du client (faut bien que je lui réponde...)

Alors voila le sacré code:

Code PHP:
if($_POST['action'] == 'submitted')
{
    
$adress "postmaster@fermedemarigny.com";
    
$sujet "Demande de renseignement ou reservation";
    
$message "Une reservation a ete effectuee depuis le site http://www.fermedemarigny.com :\n";
    
$message .= "Nom: {$_POST['nom']}\nE-mail: {$_POST['email']}\nadresse: {$_POST['adresse']}\n";
    
$message .= "Nombre d'adultes: {$_POST['adult']}\nNombre d'enfants: {$_POST['child']}\n";
    
$message .= "Nombre de chambre: {$_POST['chamb']}\n";
    
$message .= "Date d'arrivee: {$_POST['arrive']} Nombre de nuits: {$_POST['duree']}\n";
    
$entete ="From: {$_POST['email']}\n";
    
mail($adress$sujet$message$entete);
    
//page de sortie
    
$insertGoTo "http://www.fermedemarigny.com/index.html";
    if (isset(
$HTTP_SERVER_VARS['QUERY_STRING'])) {
        
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
        
$insertGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
        }
    
header(sprintf("Location: %s"$insertGoTo));
}
?>



Réservation en ligne


function verif_champs()
{
    if(document.forml.nom.value == "")
    {
        alert("Veuillez entrer votre nom SVP");
        document.forml.nom.focus();
        return false;
    }
    if(document.forml.email.value == "")
    {
        alert("Veuillez nous communiquer votre adresse email pour que nous puissons vous répondre.");
        document.forml.email.focus();
        return false;
    }
    if(document.forml.email.value.indexOf('@') == -1)
    {
        alert("Adresse Email invalide!");
        document.forml.email.focus();
        return false;
    }
    if(document.forml.email.value.length <7)
    {
        alert("Adresse Email invalide!");
        document.forml.email.focus();
        return false;
    }
    if(document.forml.adresse.value == "")
    {
        alert("Veuillez nous communiquer votre adresse, merci.");
        document.forml.adresse.focus();
        return false;
    }
    var i;
    for(i=0;i        if(document.forml.arrive.value.charAt(i)< "0" || document.forml.arrive.value.charAt(i)> "9")
        {
            alert("date d'arrivée non valide!");
            document.forml.arrive.focus();
            return false;
        }
    for(i=0;i        if(document.forml.depart.value.charAt(i)< "0" || document.forml.depart.value.charAt(i)> "9")
        {
            alert("date de départ non valide!");
            document.forml.depart.focus();
            return false;
        }
}




Pour effectuer
 une réservation en ligne, veuillez compléter le formulaire suivant. Vous 
 recevrez une réponse dans de brefs délais.


 echo $_SERVER['PHP_SELF']; ?>" onSubmit="return verif_champs()">
 
 Nom:
 
E-mail:


Adresse:

Nb d'adultes:

1
2
3
4
5
6
7
8
9
10
11
12

Nb d'enfants:

1
2
3
4
5
6
7
8
9
10
11
12

Nb de chambres:

1
2
3
4

Date d'arrivée*:

Nb de nuits:

1
2
3
4


Message:







* date au format JJMMAA, merci.



Avant de continuer, je vous préviens je suis un newbie

En gros j'ai deux questions :

1) Donc j'ai essayé de lancer cette page depuis mon localhost : http://127.0.0.1/TestPhp/reservation.php
je remplis le formulaire, je valide et je retombe, comme prévu sur la page d'accueil de mon site. Mais je ne reçois pas le mail....
Est-ce parce que c'est depuis mon localhost que l'envoi de mail ne se fait pas? Dois je configurer quelquechose pour y arriver?
Si oui je vous signale que je suis sous Ubuntu (Linux)

2) Comme ça ne marchait pas j'ai balancé cette page php dans le www de mon site, mais si je fais
http://www.fermedemarigny.com/reservation.php
j'obtiens une erreur 500 :
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, tech@ovh.net and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Apache/1.3.37 Server at www.fermedemarigny.com Port 80
Avant de faire cela j'ai essayé de chercher si je devais faire/installer quelque chose sur mon ftp auparavant mais je n'ai rien vu (ou je suis encore passé à côté sans voir...).

Vous l'aurez compris, deux problèmes et deux questions identiques "pourquoi ce que j'ai fait ne marche pas? qu'aie je oublié?

Merci pour vos réponses, ça va forcément m'aider