[RESOLU] Remplir un mail directement dans la messagerie.

Eléphant du PHP | 213 Messages

28 sept. 2022, 12:26


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,
Image

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.

Code : Tout sélectionner

<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:[email protected]" //+ "[email protected]" + "&subject=" + encodeURIComponent("Demande création de Ticket.") + "&body=" + encodeURIComponent(document.getElementById('myText').value) ; window.location.href = link; // window.open('mailto:[email protected]?subject=subject&body=body'); } </script>
Merci pour votre aide.


De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Mammouth du PHP | 1967 Messages

29 sept. 2022, 09:19

pour récupèrer le contenu HTML de ta balise textarea, utilise innerHTML plutot que value
document.getElementById('myText').innerHTML
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 213 Messages

29 sept. 2022, 10:36

Bonjour Spols,

Merci de ta réponse.
J'ai essayé avec INNERHTML et OuterHTML Mais cela ne fonctionne pas.
Si dessous le message dans Outlook.

Code : Tout sélectionner

<tbody><tr> <td bgcolor="blue" width="30%"><font color="white">Nom et/ou matricule Utilisateur :</font></td><td bgcolor="white">dsfsdf</td> </tr> <tr> <td bgcolor="blue"><font color="white">Type d’intervention (INCIDENT ou DEMANDE) :</font></td><td bgcolor="white">DEMANDE</td> </tr> <tr> <td bgcolor="blue"><font color="white">Groupe d’assignation (assignement group) :</font></td><td bgcolor="white">tertert</td> </tr> <tr> <td bgcolor="blue"><font color="white">Affecté au technicien (Assigned to) :</font></td><td bgcolor="white">fgddfgdgdf</td> </tr> <tr> <td bgcolor="blue"><font color="white">Arbre de Cloture (Work Notes) :</font></td><td bgcolor="white">[ADC_START][SDP][GUICHET][DEMANDE][USER_CMDB_DIF_NON][RDV_NON][RDV_BAL][RSDP_NON][REGUL_OUI][COMMENT/SANS COMMENTAIRE][DEM_PDT_PCF <asset_xxx><tpx_1>][Version_2.02][KEY_29092022103137e89e4da9][ADC_END]</tpx_1></asset_xxx></td> </tr> <tr> <td bgcolor="blue"><font color="white">Explications de l’intervention (close notes) :</font></td><td bgcolor="white">SANS COMMENTAIRE</td> </tr> </tbody>
Merci à toi
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

29 sept. 2022, 10:56

Avec un envoi en mailto, tu ne peux pas envoyer de mail avec un tableau dedans, tu peux juste envoyer du texte brut (pas de mise en forme)

Source : RFC6068 https://www.rfc-editor.org/rfc/rfc6068
The "body" field value is intended to contain the content for the first text/plain body part of the message.
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 1967 Messages

29 sept. 2022, 11:05

Je crois me souvenir que l'on ne peut pas faire de mail au format HTML à partir d'un lien mailto

Une solution serait de mettre le contenu en clipboard et demander à tes utilisateur de faire un ctrl+v sur le mail ouvert par le mailto

une autre solution semble la génération de fichier EML
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 213 Messages

29 sept. 2022, 13:22

Bonjour à tous,
Merci pour vos explications toujours aussi performantes pour moi.
@Spols
une autre solution semble la génération de fichier EML
Je vais passer par cette solution.

Merci à vous tous.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

29 sept. 2022, 14:33

Par ailleurs, la solution de faire un lien mailto est limité à environ 2000 caractères, donc ça restreint la taille du message que tu veux envoyer et vu ton tableau ça ne semble pas être envisageable.

Je pense que la solution en .eml n'est pas utilisable pour ceux qui utilisent Gmail / Outlook.com ou toute autre solution de mail sans logiciel installé sur son poste.

:arrow: A mon avis, la seule véritable solution perenne est de faire un formulaire avec un envoi classique de mail en PHP
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 213 Messages

29 sept. 2022, 15:05

Bonjour @rthur,
Heureusement ils auront tous Outlook d'installé pour envoyer le mail.
Mais il est vrai que cela affiche le mail avec les accents en code ascii.
De plus il faut un tableau dans le mail et le formulaire en PHP n'envoie pas de tableau( ou alors je n'ai pas trouvé comment faire).
La condition sinequanone, Outlook doit ouvrir le mail avant envoi.
Je vais chercher pour trouver les erreurs d'accents.
Merci beaucoup pour votre implication.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Eléphant du PHP | 213 Messages

29 sept. 2022, 15:29

Bonjour,

J'ai trouvé pour que tout soit conforme.

Code : Tout sélectionner

<textarea id="textbox" style="width: 300px; height: 200px;"> To: [email protected] Subject: Demande création de ticket pour REGUL/COMPLEMENT. Content-Type: multipart/mixed; boundary=--boundary_text_string ----boundary_text_string Content-Type: text/html; charset=UTF-8 <html> <head> <body> [b]Ici le tableau [/b] </body> </html> </textarea> </div> <button id="create"> <a download="DemandeTicketRegul.eml" id="downloadlink">Télécharger le mail pour envoyer.</a></button> <script> (function () { var textFile = null, makeTextFile = function (text) { var data = new Blob([text], {type: 'text/plain'}); if (textFile !== null) { window.URL.revokeObjectURL(textFile); } textFile = window.URL.createObjectURL(data); return textFile; }; var create = document.getElementById('create'), textbox = document.getElementById('textbox'); create.addEventListener('click', function () { var link = document.getElementById('downloadlink'); link.href = makeTextFile(textbox.value); link.style.display = 'block'; }, false); })(); </script>
Se sont ses trois lignes importantes pour les accents.

Code : Tout sélectionner

Content-Type: multipart/mixed; boundary=--boundary_text_string ----boundary_text_string Content-Type: text/html; charset=UTF-8
Bon courage à tous.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.