Form action

Résolu/Fermé
Utilisateur anonyme - 14 juin 2010 à 18:26
 Utilisateur anonyme - 30 juin 2010 à 11:41
Bonjour,
Je suis à la recherche d'un code pour envoyer, à partir d'un site Internet, un formulaire du style "form action" sans passer par un logiciel de messagerie comme "Outlook express" car tout le monde n'en n'a pas forcément un
Quand je mets <form method="post" action="monemail@monfai.fr"> ça m'ouvre Outlook express, ce que je ne voudrais pas
Merci de m'aider dans cette quête.


3 réponses

Utilisateur anonyme
15 juin 2010 à 11:05
Bonjour,
Si j'étais toi, j'utiliserai la fonction mail(). A savoir que certains hébergeurs n'acceptent pas cette fonction.

Un exemple :
Le formulaire.
<form method="POST" action="envoi_message.php">
       Titre : <input type="text" size="50" name="titre">
       Message : <textarea cols="90" rows="10" name="message"></textarea>
       <input type="submit" name="go" value="Envoyer">
</form>


Le code de envoi_message.php.
if (isset($_POST['go'])) {
       if (empty($_POST['titre']) || empty($_POST['message'])) {
	        echo "Au moins un des champs est vide.";
       }
	else {
                $titre = $_POST['titre'];
	        $message = $_POST['message'];
		$destinataire = "monemail@monfai.fr";

		// On définit le reste des paramètres
		$header  = "From : Le nom du site\r\n";
		$header .= "MIME-version: 1.0\n";
		$header .= "Content-type: text/html; charset=utf-8\r\n";

		// Envoi de l'email
		mail($destinataire, $titre, $message, $header);	
                echo "Message envoyé.";
	}
}
0
Utilisateur anonyme
15 juin 2010 à 12:06
Bonjour
Ce programme ne fonctionne pas
Il me renvoie sur une page d'erreur "Page non trouvée - Erreur 404"
J'ai juste modifié $destinataire où j'ai mis mon email
Il semble en effet que mon hébergeur (online.net) n'accepte pas la fonction mail()
0
atout1 Messages postés 216 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 17 juin 2011
15 juin 2010 à 12:17
salut,
mois perso j'utilise PHPMAILER
tu peux le télmécharger içi
https://sourceforge.net/projects/phpmailer/files/

le fichier contient des exemples; et tout marche nikel ... j'espère que ça t'aide dans ton pb

A+
0
Utilisateur anonyme
15 juin 2010 à 12:44
Bonjour
Ce logiciel est peut-être très bien mais tout est en anglais et il y a de nombreux fichiers
Un minimum d'explications en français est vraiment nécessaire avec des exemples
Merci
0
atout1 Messages postés 216 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 17 juin 2011
Modifié par atout1 le 15/06/2010 à 14:36
quand tu fais unzip. pour le fichier
copie "class.phpmailer.php" --> coller où se trouve ton projet (ex: dans www)
après tas l'exemple suivant qui explique tous.. en fait tout est prêt tu fais rien sauf que tu change l'adresse smtp dans la fonction

Exemple :
créer la fonction php suivant
function envoi_mail($from, $to, $sujet, $message)
{
$mail = new PHPMailer();
$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "smtp1.example.com"; // specify main and backup server
$mail->SMTPAuth = false; // turn on SMTP authentication
$mail->Username = ""; // SMTP username
$mail->Password = ""; // SMTP password

$mail->From = "$from";
$mail->FromName = "ton prénom";
$mail->AddAddress("$to");
$mail->WordWrap = 80; // set word wrap to 50 characters
$mail->IsHTML(false); // set email format to HTML
$mail->Subject = "$sujet";
$mail->Body = "$message";
if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
//echo "Message has been sent<br/>";
}

chaque fois tu veux envoyer un mail tu appel la fonction envoi_mail(avec les paramètres)
exemple :
$from = "ton mail";
$to = "mail_destinataire";
$sujet = "sujet ";
$message = "hello world !!! ";

envoi_mail($from, $to, $sujet, $message); // appel de la fonction n'oublie pas d'ajouter dans le fichier php où tu appel la fonction require("class.phpmailer.php");


dans le readme file tas autre exemple (ligne 182).

n'hésite pas à poser des questions :D
A+
0
Utilisateur anonyme
16 juin 2010 à 11:57
Trop compliqué pour un débutant!!!
J'ai trouvé le script suivant qui a l'air satisfaisant mais malheureusement pas protégé contre le spam (si quelqu'un a une idée pour le protéger...):

<?php

// N'afficher que les erreurs, pas les avertissements...
ini_set("error_reporting", "E_ALL & ~E_NOTICE");

// Adresse de réception du formulaire
$email_dest = "mon.email@monfai.fr";

if ($_POST['envoi']) {

// E-mail headers:
$headers ="MIME-Version: 1.0 \n";
$headers .="From: site www.monsite.net<webmaster@monsite.net>\n";


$headers .="Content-Type: text/html; charset=iso-8859-1 \n";

$subject = "chamari.net";

$partie_entete = "<html><head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
</head>
<body bgcolor=#FFFFFF>";

for ($a=1; $a<= $_POST['nbre_champs_texte']; $a++) {
$partie_champs_texte .= "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_champ'.$a] . " = " . $_POST['champ'.$a] . "</font><br>";
}

if ($_POST['nbre_zone_email'] != 0) {
$partie_zone_email = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_email'] . " = " . $_POST['zone_email'] . "</font><br>";
}

if ($_POST['nbre_zones_texte'] != 0) {
$partie_zone_texte = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_zone'] . " = " . $_POST['zone_texte'] . "</font><br>";
$partie_zone_texte = stripslashes($partie_zone_texte);
}

$fin = "</body></html>";

$sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_zone_texte . $fin;

// Send the e-mail
if (@!mail($email_dest,$subject,$sortie,$headers)) {
echo("Envoi du formulaire impossible");
} else { // Closing if !mail...

// Renvoi à la page de remerciement

exit();

} // Fin du else
} // Closing if edit
?>
<html>
<head>
<title></title>
<script language="JavaScript">function verifSelection() {if (document.mail_form.champ1.value == "") {
alert("Veuillez saisir votre nom")
return false
} if (document.mail_form.champ2.value == "") {
alert("Veuillez saisir votre prénom")
return false
} if (document.mail_form.zone_email.value == "") {
alert("Veuillez saisir votre email")
return false
}

invalidChars = " /:,;'"

for (i=0; i<invalidChars.length; i++) {	// does it contain any invalid characters?
badChar = invalidChars.charAt(i)

if (document.mail_form.zone_email.value.indexOf(badChar,0) > -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
document.mail_form.zone_email.focus()
return false
}
}

atPos = document.mail_form.zone_email.value.indexOf("@",1)			// there must be one "@" symbol
if (atPos == -1) {
alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.')
document.mail_form.zone_email.focus()
return false
}

if (document.mail_form.zone_email.value.indexOf("@",atPos+1) != -1) {	// and only one "@" symbol
alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.')
document.mail_form.zone_email.focus()
return false
}

periodPos = document.mail_form.zone_email.value.indexOf(".",atPos)

if (periodPos == -1) {					// and at least one "." after the "@"
alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.')
document.mail_form.zone_email.focus()
return false
}

if (periodPos+3 > document.mail_form.zone_email.value.length)	{		// must be at least 2 characters after the 
alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.')
document.mail_form.zone_email.focus()
return false
}if (document.mail_form.zone_texte.value == "") {
alert("Veuillez laisser un message")
return false
} } // Fin de la fonction

</script></head><body><form name="mail_form" method="post" action="<?=$_SERVER['PHP_SELF']?>" onSubmit="return verifSelection()">
  <div align="center"></div>
<p align="center">
<table width="566" border="0" align="center">
<p align="center">
</p><tr>
      <td><font face="Verdana" size="2">Nom</font></td>
      <td><input name="champ1" type="text"></td>
    </tr><tr>
      <td><font face="Verdana" size="2">Prénom</font></td>
      <td><input name="champ2" type="text"></td>
    </tr><tr>
      <td width><font face="Verdana" size="2">Email</font></td>
      <td width><input name="zone_email" type="text"></td>
    </tr><tr>
      <td valign="top"><font face="Verdana" size="2">Message</font></td>
      <td><textarea name="zone_texte" cols="50" rows="10"></textarea></td>
    </tr><tr>
      <td valign="top"><input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="2">
        <input name="nbre_zones_texte" type="hidden" value="1">
<input name="nbre_zone_email" type="hidden" value="1">
<input name="titre_champ1" type="hidden" value="Nom"><input name="titre_champ2" type="hidden" value="Prénom"><input name="titre_email" type="hidden" value="Email"><input name="titre_zone" type="hidden" value="Message"></td>
      <td><div align="center">
<input type="reset" name="Reset" value="Effacer">          
<input type="submit" name="envoi" value="Envoyer">
        </div></td>
    </tr>
  </table>
  <div align="center"></div>
</form></body></html>
0
Utilisateur anonyme
30 juin 2010 à 11:41
J'ai ma réponse
Le formulaire est protégé car il est en PHP et on ne peut pas le lister
0