Bouton submit pour envoi de mail
Dernière réponse : dans Programmation
Bonjour à tous,
j'ai un script php qui affiche différentes informations et mon script envoie ses infos par mail automatiquement. Je souhaiterais que l'envoi de mail ne se fasse pas automatiquement mais uniquement si on appuie sur un bouton (de type submit ??)
Ci-dessous le code que j'utilise pour l'envoi de mail :
merci d'avance pour votre aide
j'ai un script php qui affiche différentes informations et mon script envoie ses infos par mail automatiquement. Je souhaiterais que l'envoi de mail ne se fasse pas automatiquement mais uniquement si on appuie sur un bouton (de type submit ??)
Ci-dessous le code que j'utilise pour l'envoi de mail :
//*****************ENVOI PAR MAIL*****************//
$headers ='From: exemple@fai.net'."\n";
$headers .='Reply-To: exemple@fai.net'."\n";
$headers .='Content-Type: text/html; charset="utf-8"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
$destinataire = 'exemple@fai.fr';
$sujet = 'Infos '.$libelle;
ini_set("SMTP","192.168.92.15" );
if(mail($destinataire, $sujet, $message, $headers))
{
$message .= 'Le message a été envoyé';
}
else
{
$message .= 'Le message n\'a pu être envoyé';
}
}
merci d'avance pour votre aide
Autres pages sur : bouton submit envoi mail
Lassé par la pub ? Créez un compte
Oui, dans ta page d'affichage, il te faut un formulaire avec uniquement des champs cachés, et que l'action du formulaire soit une page qui ne fasse que l'envoi du mail.
Ou la même page, mais dans ce cas tu dois ajouter un champ qui permette de savoir que tu viens de soumettre ce formulaire, et encapsuler l'envoi du mail dans un if (la condition étant que ton champ soit donc rempli).
Ou la même page, mais dans ce cas tu dois ajouter un champ qui permette de savoir que tu viens de soumettre ce formulaire, et encapsuler l'envoi du mail dans un if (la condition étant que ton champ soit donc rempli).
Merci pour ta réponse crazycat, j'ai essayé ça mais l'envoi de mail ne se fait pas :
<?php if(empty($_POST['envoi_email'])) : ?>
<form method="POST">
<p>Envoyer l'email ?</p>
<p>
<input type="submit" name="envoi_email" value="Oui" />
<input type="button" onclick="location.href='traitementclient.php';" value="Non"/>
</p>
</form>
<?php
else :
$headers ='From: exemple@fai.fr'."\n";
$headers .='Reply-To: exemple@fai.fr'."\n";
$headers .='Content-Type: text/html; charset="utf-8"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
if(mail('exemple@fai.fr', 'Sujet', $message , $headers))
{
echo 'Le message a bien été envoyé';
}
else
{
echo 'Le message n\'a pu être envoyé';
}
endif;
?>
J'ai fait ça mais apparemment c'est pas bon :
En fait, je pense que mon problème c'est que ma page est déjà constitué d'une liste déroulante qui affiche des informations en fonction de notre choix et du coup quand la page se recharge il n'y a plus de choix dans la liste déroulante donc mes variables se réinitialisent dc jsais pas trop comment faire ...
if(empty($_POST['envoi_email'])) : ?>
<p>Envoyer l'email ?</p>
<p>
<input type="submit" name="envoi_email" value="Oui" />
<input type="hidden" name""envoi_email" value "Oui" />
<input type="button" onclick="location.href='traitementclient.php';" value="Non"/>
</p>
</form>
<?php
else :
$headers ='From: exemple@fai.fr'."\n";
$headers .='Reply-To: exemple@fai.fr'."\n";
$headers .='Content-Type: text/html; charset="utf-8"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
if(mail('exemple@fai.fr', 'Sujet', $message , $headers))
{
echo 'Le message a bien été envoyé';
}
else
{
echo 'Le message n\'a pu être envoyé';
}
endif;
}
?>
En fait, je pense que mon problème c'est que ma page est déjà constitué d'une liste déroulante qui affiche des informations en fonction de notre choix et du coup quand la page se recharge il n'y a plus de choix dans la liste déroulante donc mes variables se réinitialisent dc jsais pas trop comment faire ...
Bon, je réponds une dernière fois, mais je te prierai de faire un effort.
Je ne mets que $message, mais il faut bien sûr que tu mettes tout ce qui est dans ton formulaire précédent (les valeurs envoyées bien sur) dans des champs hidden.
crazycat@idn a dit :
Si tu ne mets pas le contenu de ton formulaire précédent dans celui à, çe ne marchera pas.
if (empty($_POST['envoi_email']) || ($_POST['envoi_mail']!="Oui")
{?>
<p>Envoyer l'email ?</p>
<p>
<form method="post">
<input type="hidden" name""envoi_email" value "Oui" />
<input type="hidden" name="message" value="<?php echo $message; ?>" />
<input type="submit" value="Oui" />
<input type="button" onclick="location.href='traitementclient.php';" value="Non"/>
</form>
</p>
<?php
}
else
{
$headers ='From: exemple@fai.fr'."\n";
$headers .='Reply-To: exemple@fai.fr'."\n";
$headers .='Content-Type: text/html; charset="utf-8"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
if(mail('exemple@fai.fr', 'Sujet', $message , $headers))
{
echo 'Le message a bien été envoyé';
}
else
{
echo 'Le message n\'a pu être envoyé';
}
}
?>
Je ne mets que $message, mais il faut bien sûr que tu mettes tout ce qui est dans ton formulaire précédent (les valeurs envoyées bien sur) dans des champs hidden.
Merci beaucoup crazycat, du coup j'ai opté pour le JS qui me permet en plus de spécifier l'adresse sue laquel je vais envoyer voici mon code si ça intéresse qqun :
Juste une dernière question, dans headers au moment où je précise l'adresse qui va être marqué de l'envoi, j'ai trouvé des infos pour pouvoir mettre un nom comme ça :
$headers ='From: "nom"<adresse@fai.fr>'."\n";
mais moi ça ne marche pas je suis obligé de spécifier uniquement une adresse, est-ce que tu peux me dire pourquoi ?
Encore merci pour ton aide
if((empty($_POST['email'])) || (!empty($_POST['libelle'])))
{?>
<form method="POST" onsubmit="return confirm('Envoyer l\'email ?');">
<p align="center">
<input type="email" name="email" placeholder="email@example.fr" />
<input type="hidden" name="message" value="<?php echo base64_encode($message); ?>" />
<input type="submit" />
</p>
</form>
<?php
}
else
{
$destinataire = $_POST['email'];
$message = base64_decode($_POST['message']);
$headers ='From: adresse@fai.fr'."\n";
$headers .='Reply-To: exemple@fai.fr'."\n";
$headers .='Content-Type: text/html; charset="utf-8"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
if(mail($destinataire, 'Infos Clients', $message , $headers))
{
echo '<br><p style="text-align:center;"><span style="font-weight: bold; font-size: 1.2em;">Les infos ont bien été envoyé à l\'adresse suivante :<BR><BR></span><span style="text-decoration: italic; font-weight: bold;"><I>'.$destinataire.'</I></span></p>';
}
else
{
echo '<br><p style="text-align:center;"><span style="font-weight: bold; font-size: 1.2em;">Désolé le message n\'a pas pu être remis<BR><BR></span>';
}
}
?>
Juste une dernière question, dans headers au moment où je précise l'adresse qui va être marqué de l'envoi, j'ai trouvé des infos pour pouvoir mettre un nom comme ça :
$headers ='From: "nom"<adresse@fai.fr>'."\n";
mais moi ça ne marche pas je suis obligé de spécifier uniquement une adresse, est-ce que tu peux me dire pourquoi ?
Encore merci pour ton aide
........<BR><pre>string(147) "From: nom <adresse@fai.fr>
Reply-To: lucas.richard@groupe-ocealis.com
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: 8bit
"
</pre><br />
<b>Warning</b>: mail() [<a href='function.mail'>function.mail</a>]: SMTP server response: 501 5.1.7 Invalid address in <b>C:\xampp\htdocs\traitementclient.php</b> on line <b>325</b><br />
<br><p style="text-align:center;"><span style="font-weight: bold; font-size: 1.2em;">Désolé le message n'a pas pu être remis<BR><BR></span>
Reply-To: lucas.richard@groupe-ocealis.com
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: 8bit
"
</pre><br />
<b>Warning</b>: mail() [<a href='function.mail'>function.mail</a>]: SMTP server response: 501 5.1.7 Invalid address in <b>C:\xampp\htdocs\traitementclient.php</b> on line <b>325</b><br />
<br><p style="text-align:center;"><span style="font-weight: bold; font-size: 1.2em;">Désolé le message n'a pas pu être remis<BR><BR></span>
Je pense que le problème, c'est windows:
Deuxièmement, les en-têtes personnalisés comme From:, Cc:, Bcc: et Date: ne sont pas interprétés par le MTA dans un premier temps, mais sont analysés par PHP.
De plus, le paramètre to ne doit pas être une adresse sous la forme "Quelque chose <quelqu_un@example.com>". La commande mail n'analysera pas correctement ceci lors de la discussion avec le MTA.
Citation :
L'implémentation de la fonction mail() sous Windows diffère de manière significative avec l'implémentation Unix. Tout d'abord, il n'utilise pas un programme local pour composer les messages, mais opère uniquement et directement sur les sockets, ce qui signifie qu'un MTA est nécessairement à l'écoute sur un socket du réseau (qui peut être soit sur le réseau local ou sur une machine distante).Deuxièmement, les en-têtes personnalisés comme From:, Cc:, Bcc: et Date: ne sont pas interprétés par le MTA dans un premier temps, mais sont analysés par PHP.
De plus, le paramètre to ne doit pas être une adresse sous la forme "Quelque chose <quelqu_un@example.com>". La commande mail n'analysera pas correctement ceci lors de la discussion avec le MTA.
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- solutionsBouton envoi formulaire par mail pdf
- ForumBouton envoyer mail
- ForumBouton excel 2010 envoyer mail
- ForumBouton envoyer mail userform excel
- ForumExcel bouton macro envoyer un mail
- ForumCreer bouton excel pour envoyer mail
- solutionsBouton envoyer vers mon adresse mail.
- ForumEnvoyer un mail bouton excel
- ForumBouton qui envoie directement un mail word
- ForumBouton envoyer mail formulaire
- Voir plus