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:[email protected]?subject=free chocolate">example</a>

mailto avec contenu:

<a href="mailto:[email protected]?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
Haim Evgi
la source
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:[email protected]?subject=Feedback for 
webdevelopersnotes.com&body=The Tips and Tricks section is great
&[email protected]
&[email protected]">Send me an email</a>

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

oditiwebs.com
la source
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:[email protected]?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>";
?>
William Entriken
la source
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:[email protected]?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:[email protected]?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:[email protected]?subject=testing out mailto&body=Just testing&[email protected]&[email protected]">Third
    Example</a>

Comment ajouter un sujet à la balise mailto

niksmac
la source
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

Dawson B
la source
12
mailto:joe@company.com?subject=Your+subject
payne
la source
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:[email protected]

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

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

    &[email protected]

    &[email protected]

">Click here to send email!</a>
quemeful
la source
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.

woz
la source
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
MeanEYE
la source
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

Jure Sah
la source
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>

congusbongus
la source
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.

Serdarsenay
la source
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.
Ε Г И І И О