5546 sujets

Sémantique web et HTML

Bonjour,

Je dois faire en sorte, que lorsque l'user clique sur un bouton , cela ouvre une page avec des textarea à remplir.
Ensuite il clique sur un autre bouton et envoie le mail sur cette même page..
Mais Outlook doit s'ouvrir avec le mail remplit, et l'user devra envoyer lui-même le mail.
C'est une condition obligatoire par la société.
Voila la page du formulaire.

<form method="POST" action="mailto:">
<table align="center">
    <tr align="center">
        <td align="center">
        
        <b>Matricule Utilisateur*.</b>
    </br>
        <input type="text" name="username"  size="30S" required />
  <br><br>
       <b>Groupe d’assignation (assignement group)*.</b>
       </br>
       <input type="text" name="grpassign" size="30" required/>
  <br><br>
       <b>Affecté au technicien (Assigned to)*.</b>
       </br>
       <input type="text" name="techname" size="30" required/>
       </td>
    </tr>
</table>

<input type="submit" name="" value="Envoyer mail au HD">
</form>

Mais je ne sais si cela est possible de tout faire sur la même page en PHP.
upload/1664279773-84358-mailenvoi01.png
Merci.
Modifié par wisefun77 (27 Sep 2022 - 14:03)
Bonjour,

J'aimerai apprendre comment faire pour remplir un mail dans la messagerie, depuis un formulaire en PHP.

La messagerie doit ouvrir un mail et être rempli avec un tableau.

C'est à l'user d'envoyer le mail ou non.

Je suis novice de novice en JS, mais j'ai besoin de progresser.

je sais que l'on peut passer par le html >>> mailto.

Mais le formulaire se trouve sur une page et en cliquant sur le bouton envoyer un mail, cela doit générer un mail directement remplit avec les bonnes infos,
upload/1664361267-84358-mailenvoi01.png

voici un code que j'ai essayé mais le tableau ne se forme pas dans le mail.

le formulaire est remplit et l'user fait envoyer le mail, cela redirige vers cette page, mais il doit encore faire envoyer le mail. et il n'y a aucune forme dans le tableau.

<textarea id="myText">
<table>
    <tr>
        <td>
Nom et/ou matricule Utilisateur : </td> <td>?PHP print_r($_POST['username']);?></td>
    </tr>
    <tr>
<td>
Type d’intervention (INCIDENT ou DEMANDE) :</td> <?PHP print_r($_POST['username']);?></td>
    </tr>
    <tr>
<td>
Groupe d’assignation (assignement group) :</td> <?PHP print_r($_POST['groupname']);?></td>
    </tr>
    <tr>
<td>
Affecté au technicien (Assigned to) : </td><?PHP print_r($_POST['techname']);?></td>
    </tr>
    <tr>
<td>
Arbre de Cloture (Work Notes) :</td> <?PHP print_r($_POST['balises']);?></td>
    </tr>
    <tr>
<td> 
Explications de l’intervention (close notes) : </td><?PHP print_r($_POST['comment']);?></td>
    </tr>
</textarea> 
</table>
<button onclick="sendMail(); return false">Send</button>


<script>
function sendMail() { 
    var link = "mailto:adresse@mail.fr" 
    //+ "?cc=myCCaddress@example.com" 
    + "&subject=" + encodeURIComponent("Demande création de Ticket.") 
    + "&body=" + encodeURIComponent(document.getElementById('myText').value) ; 
    window.location.href = link; 
    // window.open('mailto:test@example.com?subject=subject&body=body');
}
</script>

Merci pour votre aide.
Modifié par wisefun77 (28 Sep 2022 - 12:34)
Salut,

je ne comprends pas trop pourquoi tu passes par du javascript.

Normalement ta première solution avec le formulaire et l'action à mailto devrait fonctionner et te donner une ouverture de mail qui contient une liste de valeur pour chaque champs du formulaire (mais de mémoire c'est juste du type text du coup c'est un peu moche)

Ensuite pour ta nouvelle solution, tout le code est mal formé :
- tu ouvres un td et tu en fermes 2 à chaque fois
- tu as un textarea qui contient une table (ce qui n'a a priori pas de sens).

Je pense que le textarea ne sers à rien, qu'il faut le supprimer et qu'il faut mettre l'id sur ta table =>

<table id="myTable">


Et ensuite il faut adapter ton javascript, donc utiliser le nouvel id, et de ce que j'ai l'impression que tu essayes de faire, a priori tu veux le outerHTML, ce qui donnera un truc du genre :

document.getElementById('myTable').outerHTML

Modifié par Mathieuu (28 Sep 2022 - 14:46)
En testant, autre détail qui déconne : tu as commenté la 2e ligne de ton script

 //+ "?cc=myCCaddress@example.com" 

Ce qui fait que tu n'as plus le point d'interrogation pour commencer la liste des paramètres et ça deconne.

Il faut que après le mailto cela commence par un ? donc tu dois remplacer le &


+ "&subject=" + encodeURIComponent("Demande création de Ticket.")

=>

+ "?subject=" + encodeURIComponent("Demande création de Ticket.")


Bon du coup j'obtiens bien le code html de la page, mais il n'est pas interprété (en tout cas pas par google)


Edit : mini jsfiddle pour montrer avec les modifications : https://jsfiddle.net/wL85mzb6/
Modifié par Mathieuu (28 Sep 2022 - 14:39)
Meilleure solution
Bonjour Mathieuu,
J'ai refais mon code suivant tes explications.
Pour moi aussi il n'est pas interprété par Edge.

Est-il possible de mettre une redirection sur la page qui génère le mail, pour que l'user revienne sur la page index, et voit son Outlook ouvert.
Comme cela in ne clique que sur un seul bouton pour envoyer le mail?
Sinon je m'adapterais.

Merci beaucoup pour toutes tes explications.
Modifié par wisefun77 (28 Sep 2022 - 15:19)
Je ne comprends pas, de quelles pages parles tu ? (De où à où ?)

(Réponse au pif : En rajoutant un target="_blank" sur un de tes liens ? )
Bonjour Mathieuu,
Sur la page qui demande des infos en plus avant d'envoyer le mail, les users renseignent les infos et clique sur le bouton envoyer le mail.
Cela ouvre la page qui traite l'envoi du mail avec le code.
Mais sur cette page il y a le bouton

<button onclick="sendMail(); return false">Send</button>


j'aimerai que quand l'user clique sur le premier bouton cela traite l'envoi du mail et affiche la page de l'index du site.
Voici la page 1"demande de mail. php"

<?php include 'header.php'; ?>
<div  id="global">
<div id="texteglobal">
<!--<div id="annule">
<span>En cas de demande annulée :</span>
<a href="code-annuler.php" class="boutonannule">Cliquez ici</a>
</span>
</div>-->
</br></br>
<?php
// Set session variables
echo $_SESSION["Comment"]."<br/>";
$type=$_SESSION['Type'];
$type = substr($type,1,-1);
$_SESSION['TypeMail'] = $type;
$string = $_SESSION['Comment'];
$string = substr($string,9,-1);
$_SESSION['CommentTexte']= $string;
echo $_SESSION['CommentTexte']."<br/>";
?>
</br></br>
<form method="POST" action="testmailJS.php">
<table align="center">
    <tr align="center">
        <td align="center">
        
        <b>Matricule Utilisateur*.</b>
    </br>
        <input type="text" name="username"  size="30S" required />
  <br><br>
       <b>Groupe d’assignation (assignement group)*.</b>
       </br>
       <input type="text" name="grpassign" size="30" required/>
  <br><br>
       <b>Affecté au technicien (Assigned to)*.</b>
       </br>
       <input type="text" name="techname" size="30" required/>
       </td>
    </tr>
</table>

<input type="submit" name="" value="Envoyer mail au HD">
</form>
<br>
<div id="precedent">
<form>
			
			<button type="submit"><a href="sdp-regul.php">Précédent</a>	</button>
			</form>
            
</div>
<br>
</div><!*-------END DIV texte---->
        </div>
<?php include("footerR.php"); ?>

Qui appelle la page du mail

<?php include 'header.php'; ?>
<div  id="global">
<div id="texteglobal">
<?PHP
if((!empty($_SESSION['ValueGenerale'])&& empty($_SESSION['ValueInter']))){
    echo "ValueInter est vide";
?>
<table id="myTable" border="2">
    <tr>
        <td bgcolor="blue" width="30%" ><FONT COLOR="white">Nom et/ou matricule Utilisateur :</FONT></td><td bgcolor="white"><?PHP print_r($_POST['username']);?></td>
    </tr>
    <tr>
<td bgcolor="blue" ><FONT COLOR="white">Type d’intervention (INCIDENT ou DEMANDE) :</font></td><td bgcolor="white"><?PHP print_r($_SESSION['TypeMail']);?></td>
    </tr>
    <tr>
<td bgcolor="blue" ><FONT COLOR="white">Groupe d’assignation (assignement group) :</font></td><td bgcolor="white"><?PHP print_r($_POST['grpassign']);?></td>
    </tr>
    <tr>
<td bgcolor="blue" ><FONT COLOR="white">Affecté au technicien (Assigned to) :</FONT></td><td bgcolor="white"><?PHP print_r($_POST['techname']);?></td>
    </tr>
    <tr>
<td bgcolor="blue" ><FONT COLOR="white">Arbre de Cloture (Work Notes) :</FONT></td><td bgcolor="white"><?PHP print_r($_SESSION['ValueGenerale']);?></td>
    </tr>
    <tr>
<td bgcolor="blue" ><FONT COLOR="white">Explications de l’intervention (close notes) :</FONT></td><td bgcolor="white"><?PHP print_r($_SESSION['CommentTexte']);?></td>
    </tr>
</table>


<button onclick="sendMail(); return false">Send</button>
<?PHP
}
if((!empty($_SESSION['ValueGenerale'])&& !empty($_SESSION['ValueInter']))){
    echo "ValueInter est plein";
}
?>

<script>
function sendMail() { 
    var link = "mailto:safranbugtrackeradc@fr.scc.com" 
    // + "?cc=myCCaddress@example.com" 
    // Il faut que après le mailto cela commence par un ? 
    + "?subject=" + encodeURIComponent("Demande création de Ticket.") 
    + "&body=" + encodeURIComponent(document.getElementById('myTable').outerHTML) ; 
    window.location.href = link; 
}
</script>

<br>
</div><!---- END DIV texte---->
        </div>
<?php include("footerR.php"); ?>

Ou alors mettre un message sur cette page leur indiquant de bien vérifier si Outlook est ouvert, mais ils ne devront pas voir le tableau.

Prise de tête.
Merci pour ta patience.
Modifié par wisefun77 (28 Sep 2022 - 16:23)
Bonjour Mathieuu,

J'ai trouvé une solution.
J'ai ajouté ce code dans la balise <table style="display: none;">

maintenant je dois absolument trouver comment afficher correctement le tableau dans le mail.
Mais c'est un autre sujet.

Merci beaucoup pour ton aide.