86 votes

Invoquer / cliquer sur un lien mailto avec JQuery / JavaScript

Je voudrais invoquer un Adresse électronique : C'est-à-dire que je voudrais une méthode qui me permette d'ouvrir le client de messagerie sur le PC de l'utilisateur, exactement comme s'il avait cliqué sur un lien mailto normal.

Comment puis-je le faire ?

0 votes

Exemple de travail : jsfiddle.net/gaboom/h81qov5g

1 votes

Essayez <button onclick="window.open('mailto:KingRider<contato@sandroalvares‌​.com.br>');">Contact me</button>

148voto

Nick Craver Points 313913

Vous pouvez utiliser window.location.href ici, comme ça :

window.location.href = "mailto:address@dmail.com";

4 votes

Et comment ajouter un corps ? mailto:address@dmail.com?body=myBody et mailto:address@dmail.com&myBody ne fonctionnent pas pour moi...

0 votes

@jipiboily, pouvez-vous nous en dire plus ? Quel navigateur avez-vous essayé et qui n'a pas fonctionné ?

0 votes

@Adnan : d'après ce que je me souviens, cela ne fonctionne pas avec Opera et peut-être d'autres navigateurs. En fonction de vos besoins, vous pourriez être en mesure de contourner ce problème.

10voto

franzo Points 231

Vous pouvez éviter le problème de la page blanche évoqué 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>

0 votes

J'ai essayé ceci : ` function Call(){ document.getElementById('mymailto').click() ; } <a href="tel:+48123456" id="mymailto" style="display:none"></a>` et le nouvel onglet s'ouvre toujours.

6voto

Toskan Points 1231

La réponse qui fonctionne pour moi, testée dans chrome, IE et firefox ainsi que dans outlook était la suivante

window.location.href = 'mailto:address@dmail.com?subject=Hello there&body=This is the body';

%0d%0a est le symbole de nouvelle ligne du corps du courriel dans un lien mailto

%20 est le symbole d'espace qui devrait être utilisé, mais cela a fonctionné pour moi aussi avec un espace normal.

2voto

Prabin Tp Points 153

Mieux vaut utiliser

window.open('mailto:address@mail.com?subject=sub&body=this is body')

Si nous utilisons window.location.href le navigateur chrome a une erreur dans l'onglet réseau avec les en-têtes provisoires sont affichés Mise à niveau des demandes non sécurisées : 1

0 votes

Cela m'a beaucoup aidé, merci @Prabin Tp

1voto

s34n Points 11

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

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

En utilisant jQuery, j'ai obtenu ceci :

var initMailtoButton = function()
{
    var iframe = $('<iframe id="mailtoFrame" src="mailto:name@domain.com" 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);

        });
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X