Envoi mail multi-destinataire et multi-champ
Paname
-
JPLO -
JPLO -
Bonjour à tous,
Je cherche à réaliser un formulaire d'envoi d'email, en apparence asser simple, avec plusieurs destinataires. Ce formulaire doit posséder 6 champs de saisie de texte.
1er champ : Votre mail
2e champ : Destinataire 1
3e champ : Destinataire 2
4 e champ : Destinataire 3
5e champ Sujet de votre message
6e champ : Message
Terminer par valider
J'ai trouvé des scripts qui le réalisaient mais aucun qui prenait en compte l'adresse inscrite dans les 3 champs "destinataires". Quelqu'un a-t-il trouvé le sésame ?
Merci infiniment à ceux qui trouveront
Je cherche à réaliser un formulaire d'envoi d'email, en apparence asser simple, avec plusieurs destinataires. Ce formulaire doit posséder 6 champs de saisie de texte.
1er champ : Votre mail
2e champ : Destinataire 1
3e champ : Destinataire 2
4 e champ : Destinataire 3
5e champ Sujet de votre message
6e champ : Message
Terminer par valider
J'ai trouvé des scripts qui le réalisaient mais aucun qui prenait en compte l'adresse inscrite dans les 3 champs "destinataires". Quelqu'un a-t-il trouvé le sésame ?
Merci infiniment à ceux qui trouveront
A voir également:
- Envoi mail multi-destinataire et multi-champ
- Programmer envoi mail gmail - Guide
- Multi boot windows - Guide
- Windows live mail - Télécharger - Mail
- Envoi mail cci - Guide
- Multi exp pokemon diamant - Forum Jeux vidéo
5 réponses
cela ne fonctionne pas avec des champs à remplir.
Bien sûr que si ! Une adresse email est toujours une chaîne de caractère, qu'elle vienne d'un champ à saisir ou qu'elle apparaisse telle quelle dans le code. Tu peux TOUJOURS l'entourer de <> et en mettre plusieurs bout à bout en les séparant par de virgules.
Bien sûr que si ! Une adresse email est toujours une chaîne de caractère, qu'elle vienne d'un champ à saisir ou qu'elle apparaisse telle quelle dans le code. Tu peux TOUJOURS l'entourer de <> et en mettre plusieurs bout à bout en les séparant par de virgules.
$to=''; // récupérer les destinataires $dest1 = isset($_POST['destinaire1'])) ? trim($_POST['destinaire1'])) :''; $dest2 = isset($_POST['destinaire2'])) ? trim($_POST['destinaire2'])) :''; $dest3 = isset($_POST['destinaire3'])) ? trim($_POST['destinaire3'])) :''; if ($dest1 != '') $to.='<'.$dest1.'>, '; if ($dest2 != '') $to.='<'.$dest2.'>, '; if ($dest3 != '') $to.='<'.$dest3.'>, '; // enlever la virgule et l'espace à la fin if (strlen($to)>0) $to=substr($to,0,-2);Je n'ai pas testé, il peut y avoir des erreurs, mais c'est l'idée.
Bonjour
Il suffit d'entourer les adresses de <> et de les mettre séparées par une virgule :
$to='<adresse1@fai.fr>, <adresse2@fai.fr>, <adresse2@fai.fr>';
Il suffit d'entourer les adresses de <> et de les mettre séparées par une virgule :
$to='<adresse1@fai.fr>, <adresse2@fai.fr>, <adresse2@fai.fr>';
Bonjour toto et merci pour ta réponse !
Hélas cela ne fonctionne pas avec des champs à remplir...
Ton astuce fonctionne très bien si j'inscris dans le code, les afresse e-mail, mais si je souhaite laisser linternaute renseigner les champs et valider, cela ne fonctionne plus.
J'ai bien essayé de leur mettre un id, mais le code ne semble pas le prendre en compte.... tu sais pourquoi ?
Merci toto et bon week-end
Hélas cela ne fonctionne pas avec des champs à remplir...
Ton astuce fonctionne très bien si j'inscris dans le code, les afresse e-mail, mais si je souhaite laisser linternaute renseigner les champs et valider, cela ne fonctionne plus.
J'ai bien essayé de leur mettre un id, mais le code ne semble pas le prendre en compte.... tu sais pourquoi ?
Merci toto et bon week-end
Je t'avais prévenu que je n'avais pas testé...
J'avais laissé quelques parenthèses en trop :
$dest1 = $_POST['destinaire1'] ? trim($_POST['destinaire1']) :'';
(idem autres lignes)
De plus, tout le traitement du formulaire ne doit être fait que si le formulaire a été saisi : tu dois ajouter if (isset($_POST['valide'])) {...
J'avais laissé quelques parenthèses en trop :
$dest1 = $_POST['destinaire1'] ? trim($_POST['destinaire1']) :'';
(idem autres lignes)
De plus, tout le traitement du formulaire ne doit être fait que si le formulaire a été saisi : tu dois ajouter if (isset($_POST['valide'])) {...
Génial ! avec ces recomandations, le code fonctionne. Seul hic (de taille) les destinataires reçoivent le mail deux fois (et le champ "to" des boites mail affiche les destinataires (pas très confidentiel). Tu sais d'où cela provient ?
J'ai procédé à un lifting poussé du code et ça fonctionne toujours. J'espère ne pas en avoir trop sorti.
<form action="" method="post">
<p><label>Votre Adresse E-mail :</label>
<input type="text" class="forml" name="email" value="" size="30" /></p>
<p><label>Mail 1 :</label>
<input type="text" class="forml" name="destinaire1" value="" size="30" /></p>
<p><label>Mail 2 :</label>
<input type="text" class="forml" name="destinaire2" value="" size="30" /></p>
<p><label>Mail 3 :</label>
<input type="text" class="forml" name="destinaire3" value="" size="30" /></p>
<input type="hidden" class="forml" name="sujet" value="Un ami vous recommande ce site" size="30" /></p>
<p><label>Votre message :</label>
<textarea class="forml" name="message" rows="10" cols="40"></textarea></p>
<div align="right"><input type="submit" name="valide" value="Envoyer" /></div>
</fieldset>
</form>
<?php
$Mail = $_POST['email'];
$Sujet = $_POST['sujet'];
$Message = $_POST['message'];
$to='';
// récupérer les destinataires
$dest1 = $_POST['destinaire1'];
$dest2 = $_POST['destinaire2'];
$dest3 = $_POST['destinaire3'];
if (isset($_POST['valide']));
$to.='<'.$dest1.'>, ';
$to.='<'.$dest2.'>, ';
$to.='<'.$dest3.'>, ';
$mailheaders = "From:".$Mail."\n";
$mailheaders .= "To:".$to."\n";
$mailheaders .= "Reply-To: No reply <>\n\n";
mail($to, $Sujet, $Message, $mailheaders);
?>
J'ai procédé à un lifting poussé du code et ça fonctionne toujours. J'espère ne pas en avoir trop sorti.
<form action="" method="post">
<p><label>Votre Adresse E-mail :</label>
<input type="text" class="forml" name="email" value="" size="30" /></p>
<p><label>Mail 1 :</label>
<input type="text" class="forml" name="destinaire1" value="" size="30" /></p>
<p><label>Mail 2 :</label>
<input type="text" class="forml" name="destinaire2" value="" size="30" /></p>
<p><label>Mail 3 :</label>
<input type="text" class="forml" name="destinaire3" value="" size="30" /></p>
<input type="hidden" class="forml" name="sujet" value="Un ami vous recommande ce site" size="30" /></p>
<p><label>Votre message :</label>
<textarea class="forml" name="message" rows="10" cols="40"></textarea></p>
<div align="right"><input type="submit" name="valide" value="Envoyer" /></div>
</fieldset>
</form>
<?php
$Mail = $_POST['email'];
$Sujet = $_POST['sujet'];
$Message = $_POST['message'];
$to='';
// récupérer les destinataires
$dest1 = $_POST['destinaire1'];
$dest2 = $_POST['destinaire2'];
$dest3 = $_POST['destinaire3'];
if (isset($_POST['valide']));
$to.='<'.$dest1.'>, ';
$to.='<'.$dest2.'>, ';
$to.='<'.$dest3.'>, ';
$mailheaders = "From:".$Mail."\n";
$mailheaders .= "To:".$to."\n";
$mailheaders .= "Reply-To: No reply <>\n\n";
mail($to, $Sujet, $Message, $mailheaders);
?>
les destinataires reçoivent le mail deux fois Alors c'est que d'une manière ou d'une autre, tu l'appelles deux fois (ou tu mets deux fois la même adresse de destinataire). Le script par lui-même n'envoie pas le mail deux fois, je peux te le garantir.
le champ "to" des boites mail affiche les destinataires Bien sûr, le but de la manip c'était d'envoyer le mail à plusieurs personnes. Tu n'avais pas précisé que tu voulais cacher les noms de destinataires !
Pour cacher les destinataires, il suffit de les mettre dans le champ Cci:
Attention, il n'y aura plus aucun nom dans le destinataire. Si tu veux quand même que le nom apparaisse, alors tu es obligé de faire 3 envois de mails normaux.
Pourquoi ne pas avoir tenu compte de la remarque De plus, tout le traitement du formulaire ne doit être fait que si le formulaire a été saisi : tu dois ajouter if (isset($_POST['valide'])) {... ?
le champ "to" des boites mail affiche les destinataires Bien sûr, le but de la manip c'était d'envoyer le mail à plusieurs personnes. Tu n'avais pas précisé que tu voulais cacher les noms de destinataires !
Pour cacher les destinataires, il suffit de les mettre dans le champ Cci:
// enlever la virgule et l'espace à la fin if (strlen($to)>0) $to=substr($to,0,-2); $mailheaders = "From:".$Mail."\n"; $mailheaders .= "To:\n"; $mailheaders .= "Cci:".$to."\n"; $mailheaders .= "Reply-To: No reply <>\n\n";
Attention, il n'y aura plus aucun nom dans le destinataire. Si tu veux quand même que le nom apparaisse, alors tu es obligé de faire 3 envois de mails normaux.
Pourquoi ne pas avoir tenu compte de la remarque De plus, tout le traitement du formulaire ne doit être fait que si le formulaire a été saisi : tu dois ajouter if (isset($_POST['valide'])) {... ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci en tout cas Toto
<form action="" method="post">
<p><label>Votre Adresse E-mail :</label>
<input type="text" class="forml" name="email" id="email" value="" size="30" /></p>
<p><label>Mail 1 :</label>
<input type="text" class="forml" name="destinaire1" id="destinaire1" value="" size="30" /></p>
<p><label>Mail 2 :</label>
<input type="text" class="forml" name="destinaire2" id="destinaire2" value="" size="30" /></p>
<p><label>Mail 3 :</label>
<input type="text" class="forml" name="destinaire3" id="destinaire3" value="" size="30" /></p>
<p><label>Sujet de votre Message :</label>
<input type="text" class="forml" name="sujet" id="sujet" value="" size="30" /></p>
<p><label>Votre message :</label>
<textarea class="forml" name="message" id="message" rows="10" cols="40"></textarea></p>
<div align="right"><input type="submit" name="valide" value="Envoyer" /></div>
</fieldset>
</form>
<?php
$Mail = $_POST['email'];
$Sujet = $_POST['sujet'];
$Message = $_POST['message'];
$to='';
// récupérer les destinataires
$dest1 = ($_POST['destinaire1'])) ? trim($_POST['destinaire1'])) :'';
$dest2 = ($_POST['destinaire2'])) ? trim($_POST['destinaire2'])) :'';
$dest3 = ($_POST['destinaire3'])) ? trim($_POST['destinaire3'])) :'';
if ($dest1 != '') $to.='<'.$dest1.'>, ';
if ($dest2 != '') $to.='<'.$dest2.'>, ';
if ($dest3 != '') $to.='<'.$dest3.'>, ';
// enlever la virgule et l'espace à la fin
if (strlen($to)>0) $to=substr($to,0,-2);
$mailheaders = "From:".$Mail."\n";
$mailheaders .= "To:".$to."\n";
$mailheaders .= "Reply-To: No reply <>\n\n";
mail($to, $Sujet, $Message, $mailheaders);
?>