par ecrivain77 29-Septembre-2022

Bonjour,

Je suis persuadé que vous allez trouver la solution.
J'ai effectué pleins de tests mais je n'ai pas trouvé la solution.
Je dois faire en sorte que lorsque que l'user clique sur le bouton "envoyer un mail" cela ouvre Outlook et remplisse le mail.
J'ai touvé pour cela, mais le mail apparait avec les balises HTML au lieu de faire un tableau.

<table id="myTable">
    <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> <td><?PHP print_r($_SESSION['Type']);?></td>
    </tr>
    <tr>
<td>Groupe d’assignation (assignement group) :</td><td> <?PHP print_r($_POST['grpassign']);?></td>
    </tr>
    <tr>
<td>Affecté au technicien (Assigned to) : </td><td><?PHP print_r($_POST['techname']);?></td>
    </tr>
    <tr>
<td>Arbre de Cloture (Work Notes) :</td><td> <?PHP print_r($_SESSION['ValueGenerale']);?></td>
    </tr>l
    <tr>
<td>Explications de l’intervention (close notes) : </td><td><?PHP print_r($_SESSION['CommentTexte']);?></td>
    </tr>
</table>
<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>

Voici comment le mail s'affiche.

<table id="myTable"> 
    <tbody><tr> 
        <td>Nom et/ou matricule Utilisateur : </td> <td>cgxv</td> 
    </tr> 
    <tr> 
<td>Type d’intervention (INCIDENT ou DEMANDE) :</td> <td>[DEMANDE]</td> 
    </tr> 
    <tr> 
<td>Groupe d’assignation (assignement group) :</td><td> zerezr</td> 
    </tr> 
    <tr> 
<td>Affecté au technicien (Assigned to) : </td><td> vcxvxcv</td> 
    </tr> 
    <tr> 
<td>Arbre de Cloture (Work Notes) :</td><td> [ADC_START][SDP][GUICHET][DEMANDE][USER_CMDB_DIF_NON][RDV_NON][RDV_BAL][RSDP_NON][REGUL_OUI][COMMENT/SANS COMMENTAIRE][REP__PRT <asset_xxx <="" tpx_1="">][Version_2.02][KEY_280920221515107085ea84][ADC_END]</asset_xxx></td>
    </tr><tr> 
<td>Explications de l’intervention (close notes) : </td><td>SANS COMMENTAIRE</td> 
    </tr> 
</tbody></table> 

j'ai essayé avec chrome et Edge et c'est idem.
Merci de tout cœur pour votre attention.

1 Réponse

par Antoine 29-Septembre-2022

Bonjour, c'est malheureusement impossible ; vous ne pouvez pas envoyer un contenu HTML via les arguments subject et body d'un lien mailto.

Les seules solutions de mises en page sont celles disponibles avec JavaScript et la fonction encodeURIComponent, ou son équivalent PHP urlencode ; vous ne pourrez alors que gérer les espaces, les retours chariot et les tabulations.

<pre id="myTable">
Nom et/ou matricule Utilisateur : data php
Type d’intervention (INCIDENT ou DEMANDE) : data php
Groupe d’assignation (assignement group) : data php
Affecté au technicien (Assigned to) : data php
Arbre de Cloture (Work Notes) : data php
Explications de l’intervention (close notes) : data php
</pre>
<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 ? OUI
    + "?subject=" + encodeURIComponent("Demande création de Ticket.") 
    + "&body=" + encodeURIComponent(document.getElementById('myTable').innerHTML); 
    window.location.href = link; 
}
sendMail()
</script>

Autres alternatives :

  • Utiliser un serveur de mail avec la librairie PHPmailer.
  • Générer un fichier eml ou msg que l'utilisateur pourra ouvrir pour ensuite l'envoyer.

Je n'ai jamais utilisé cette dernière solution. Mais si vous ouvrez Outlook et commencez à rédiger un mail, vous remarquerez que vous pouvez l'enregistrer au format msg. Il est donc surement possible de générer un tel fichier via une librairie PHP, à creuser via Google.

par ecrivain77 29-Septembre-2022

Bonjour,

J'en étais sur que vous auriez la bonne réponse.
Effectivement je suis passé par un fichier EML, mais les accents s'affichent en code ascii.
Je vais étudier un fichier msg.

Merci de tout coeur pour votre implication.

Bienvenue sur 1FORMATIK, où vous pouvez poser des questions en lien avec l'informatique et internet, et recevoir des réponses d'Antoine et d'autres internautes.

2.6k questions

3k réponses

...