web-dev-qa-db-fra.com

Invoquer / cliquer sur un lien mailto avec JQuery / JavaScript

J'aimerais invoquer un lien mailto à partir de JavaScript. J'aimerais une méthode qui me permet d'ouvrir le client de messagerie sur le PC des utilisateurs, exactement comme s'ils avaient cliqué sur un mailto normal. lien.

Comment puis-je faire ceci?

73
Justin

Vous pouvez utiliser window.location.href ici, comme ceci:

window.location.href = "mailto:[email protected]";
125
Nick Craver

Vous pouvez éviter le problème de page blanche discuté ci-dessus en utilisant plutôt .click () avec un lien sur la page:

document.getElementById('mymailto').click();
...
<a href="mailto:...." id="mymailto" style="display:none"></a>
9
franzo

la réponse de travail pour moi, testé en chrome, IE et firefox avec Outlook était-ce

window.location.href = 'mailto:[email protected]?subject=Hello there&body=This is the body';

%0d%0a est le nouveau symbole de ligne du corps de l'e-mail dans un lien mailto

%20 est le symbole d’espace à utiliser, mais il a également fonctionné pour un espace normal

2
Toskan

En fait, il existe une possibilité d'éviter la page vide.

J'ai découvert que vous pouvez simplement insérer un iframe avec le lien mailto dans le dom. Cela fonctionne sur les versions actuelles de Firefox/Chrome et IE (également IE affichera une courte boîte de dialogue de confirmation)).

En utilisant jQuery, j'ai eu ceci:

var initMailtoButton = function()
{
    var iframe = $('<iframe id="mailtoFrame" src="mailto:[email protected]" width="1" height="1" border="0" frameborder="0"></iframe>');
    var button = $('#mailtoMessageSend');    
    if (button.length > 0) {            
        button.click(function(){
            // create the iframe
            $('body').append(iframe);
            //remove the iframe, we don't need it any more
            window.setTimeout(function(){
                iframe.remove();    
            }, 500);

        });
    }
}
0
s34n