Puis-je définir l'objet / le contenu d'un e-mail à l'aide de mailto:?


Réponses:


1460

Oui, regardez tous les trucs et astuces avec mailto: http://www.angelfire.com/dc/html-webmaster/mailto.htm

Exemple d'objet mailto:

<a href="mailto:no-one@snai1mai1.com?subject=free chocolate">example</a>

mailto avec contenu:

<a href="mailto:no-one@snai1mai1.com?subject=look at this website&body=Hi,I found this website and thought you might like it http://www.geocities.com/wowhtml/">tell a friend</a>

Comme mentionné dans les commentaires, les deux subjectet bodydoivent être échappés correctement. À utiliser encodeURIComponent(subject)sur chacun, plutôt que de coder manuellement pour des cas spécifiques.

Comme Hoody l'a mentionné dans les commentaires, vous pouvez ajouter des sauts de ligne en ajoutant la séquence codée suivante dans la chaîne:

%0D%0A // one line break

29
est-il possible d'utiliser du HTML pour le corps?
Jiew Meng

18
C'est entièrement spécifique au client. Dans le cas général, non.
tripleee

4
Juste à titre de référence: vous n'avez pas à htmlescape le sujet
Oscar Pérez

17
Notez que W3C requiert que vous encodiez votre chaîne en suivant ces règles: Les caractères doivent être représentés dans NFC et les espaces doivent être échappés en tant que% 20.
gordie

96
Au cas où quelqu'un d'autre se demanderait, vous pouvez également ajouter des sauts de ligne au corps en utilisant la séquence% 0D% 0A - cubetoon.com/2008/…
Hoody

123
<a href="mailto:manish@simplygraphix.com?subject=Feedback for 
webdevelopersnotes.com&body=The Tips and Tricks section is great
&cc=anotheremailaddress@anotherdomain.com
&bcc=onemore@anotherdomain.com">Send me an email</a>

vous pouvez utiliser ce code pour définir le sujet, le corps, le cc, le bcc


39

Le mailto:schéma d'URL est défini dans la RFC 2368 . De plus, la convention de codage des informations en URL et URI est définie dans RFC 1738 puis RFC 3986 . Ceux-ci prescrivent comment inclure les en body- subjecttêtes et dans une URL (URI):

mailto:infobot@example.com?subject=current-issue&body=send%20current-issue

Plus précisément, vous devez coder en pourcentage l'adresse e-mail, l'objet et le corps et les mettre dans le format ci-dessus. Le texte codé en pourcentage est légal pour une utilisation en HTML, mais cette URL doit être codée par entité pour une utilisation dans unhref attribut, conformément à la norme HTML4 :

<a href="mailto:infobot@example.com?subject=current-issue&amp;body=send%20current-issue">Send email</a>

Et le plus généralement, voici un simple script PHP qui code selon ce qui précède.

<?php
$encodedTo = rawurlencode($message->to);
$encodedSubject = rawurlencode($message->subject);
$encodedBody = rawurlencode($message->body);
$uri = "mailto:$encodedTo?subject=$encodedSubject&body=$encodedBody";
$encodedUri = htmlspecialchars($uri);
echo "<a href=\"$encodedUri\">Send email</a>";
?>

Voici un exemple beaucoup plus approfondi pour savoir si votre e-mail contient une URL et que cette URL contient des éléments qui doivent être encodés: stackoverflow.com/questions/4744888/…
William Entriken

1
Je pense qu'il y a une faute de frappe dans la ligne $uri = ...: le &devant subjectdevrait être un?
jost21

24

Vous pouvez ajouter un objet ajouté à la commande mailto en utilisant l'une des méthodes suivantes. Ajoutez? Subject out mailto à la balise mailto.

<a href="mailto:test@example.com?subject=testing out mailto">First Example</a>

Nous pouvons également ajouter du texte dans le corps du message en ajoutant & body à la fin de la balise, comme indiqué dans l'exemple ci-dessous.

 <a href="mailto:test@example.com?subject=testing out mailto&body=Just testing">Second Example</a>

En plus du corps, un utilisateur peut également taper & cc ou & bcc pour remplir les champs CC et BCC.

<a href="mailto:test@example.com?subject=testing out mailto&body=Just testing&cc=test1@example.com&bcc=test1@example.com">Third
    Example</a>

Comment ajouter un sujet à la balise mailto


13

J'ai créé un outil open source pour rendre cela facile. Entrez les chaînes que vous souhaitez et vous obtiendrez instantanément mailto:

mailto.now.sh

💌⚡️ Modèles d'e-mails complets dans un mailto

entrez la description de l'image ici


12
mailto:joe@company.com?subject=Your+subject

1
Mon subjectn'est pas du texte. C'est une table. Comment ajouter ça.
David

9

Je l'ai divisé en lignes distinctes pour le rendre un peu plus lisible.

<a href="

    mailto:johndoe@gmail.com

    ?subject=My+great+email+to+you

    &body=This+is+an+awesome+email

    &cc=janedoe@gmail.com

    &bcc=billybob@yahoo.com

">Click here to send email!</a>

1
cette question a reçu une réponse il y a 5 ans
varun aaruru

14
et il est toujours utilisé aujourd'hui quand vous voulez envoyer quelque chose
quemeful


7

Oui:

Utilisez -le pour tester les éléments du formulaire mailto et l'encodage des liens.

Vous pouvez entrer le sujet, le corps (c'est-à-dire le contenu), etc. dans le formulaire, appuyer sur le bouton et voir le lien html mailto que vous pouvez coller dans votre page.

Vous pouvez même spécifier des éléments rarement connus et utilisés: cc, bcc, à partir de courriels.


Une fonctionnalité très utile de ce compositeur de champ href est également la possibilité de coder tous les caractères en hexadécimal (par exemple: [Test Zõne]devient %5BTest%20Z%C3%B5ne%5D, cela peut éviter certains robots indésirables).
Armfoot

Je veux dire, si vous choisissez d'encoder tous les caractères, ils sont tous convertis en notation HTML &#x(en évitant certains robots indésirables).
Armfoot

4
Ce lien est mort.
Bram Vanroy

6

Oui, vous pouvez aimer ça:

mailto: email@host.com?subject=something

2
Je ne pense pas que l'espace devrait être là?
nafg

cela devrait être sans espace.
Hassan Raza

5

Notez qu'il n'est pas possible d'utiliser HTML dans le corps du message, selon la RFC 2368 :

Le hname spécial "body" indique que la valeur h associée est le corps du message. Le hname "body" doit contenir le contenu de la première partie texte / corps brut du message. L'URL mailto est principalement destinée à la génération de messages texte courts qui sont en fait le contenu du traitement automatique (tels que les messages "s'abonner" aux listes de diffusion), et non les corps MIME généraux.

Crédit: https://stackoverflow.com/a/13415988/1835519


2
La question est de savoir comment définir le sujet et le contenu. Il n'a pas mentionné le formatage. Bien que ce soit une chose utile à noter sur une réponse, vous avez laissé de côté ce qui est possible et comment y parvenir. Sans cela, c'est un commentaire, pas une réponse.
Quentin

Jure, j'apprécie vraiment que vous mettiez cela comme une réponse à cette question car c'est exactement ce que j'avais besoin de découvrir et que je me demandais. Donc, bien que Quentin pense que cela ne répond pas à la question OP, il répond à la mienne que je cherchais et qui a soulevé ce message. Merci beaucoup Jure!
user1567291

3

Voici un extrait exécutable pour vous aider à générer des liens mailto: avec un sujet et un corps facultatifs.

function generate() {
  var email = $('#email').val();
  var subject = $('#subject').val();
  var body = $('#body').val();

  var mailto = 'mailto:' + email;
  var params = {};
  if (subject) {
    params.subject = subject;
  }
  if (body) {
    params.body = body;
  }
  if (params) {
    mailto += '?' + $.param(params);
  }

  var $output = $('#output');
  $output.val(mailto);
  $output.focus();
  $output.select();
  document.execCommand('copy');
}

$(document).ready(function() {
  $('#generate').on('click', generate);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="email" placeholder="email address" /><br/>
<input type="text" id="subject" placeholder="Subject" /><br/>
<textarea id="body" placeholder="Body"></textarea><br/>
<button type="button" id="generate">Generate & copy to clipboard</button><br/>
<textarea id="output">Output</textarea>


1

Si vous souhaitez ajouter du contenu html à votre e-mail, codez l'URL de votre code html pour le corps du message et incluez-le dans votre code de lien mailto, mais le problème est que vous ne pouvez pas définir le type d'e-mail à partir de ce lien du texte brut en html, le client utilisant le lien a besoin de son client de messagerie pour envoyer des e-mails html par défaut. Dans le cas où vous souhaitez tester, voici le code d'un lien mailto simple, avec une image enveloppée dans un lien (des URL de style angulaire ont été ajoutées pour la visibilité):

<a href="mailto:?body=%3Ca%20href%3D%22{{ scope.url }}%22%3E%3Cimg%20src%3D%22{{ scope.url }}%22%20width%3D%22300%22%20%2F%3E%3C%2Fa%3E">

Les balises html sont encodées en URL.


Pouvez-vous également publier un exemple où le corps <a href> a juste le href et un texte entre lui et la balise de fin? Merci
user1567291

<a href="<même que ci-dessus> "> Ceci est le texte du lien </a> @ user1567291
serdarsenay

Ça ne marche pas. Le client de messagerie affichera simplement toutes les balises html sous forme de texte au lieu de les traiter comme un document texte riche.
Ε Г И І И О
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.