Rufen Sie einen Mailto-Link mit JQuery / JavaScript auf / klicken Sie darauf

81

Ich möchte einen Mailto- Link über JavaScript aufrufen - das heißt, ich möchte eine Methode, mit der ich den E-Mail-Client auf dem PC des Benutzers öffnen kann, genau so, als hätten sie auf einen normalen Mailto-Link geklickt.

Wie kann ich das machen?

Justin
quelle
Arbeitsbeispiel: jsfiddle.net/gaboom/h81qov5g
sibidiba
1
versuchen<button onclick="window.open('mailto:KingRider<[email protected]>');">Contact me</button>
KingRider

Antworten:

138

Sie können window.location.hrefhier wie folgt verwenden:

window.location.href = "mailto:[email protected]";
Nick Craver
quelle
3
und wie würde ich einen Körper anhängen? mailto: [email protected]? body = myBody und mailto: [email protected]& myBody funktioniert nicht für mich ...
Max
@ jipiboily, kannst du bitte mehr erklären? Welchen Browser haben Sie ausprobiert und es hat nicht funktioniert?
Adi
@Adnan, soweit ich mich erinnere, funktioniert es nicht mit Opera und vielleicht mehr Browsern. Abhängig von Ihren Anforderungen können Sie dieses Problem möglicherweise umgehen.
jipiboily
@Rolf Ich habe gerade im neuesten Chromstall getestet und arbeite immer noch.
Nick Craver
9
Max, du hast das wahrscheinlich herausgefunden, aber für zukünftige Leser : window.location.href = 'mailto:[email protected]&subject=Hello there&body=This is the body';. Nicht ?und nicht &amp;, nur&
Cssyphus
9

Sie können das oben beschriebene Problem mit leeren Seiten vermeiden, indem Sie stattdessen .click () mit einem Link auf der Seite verwenden:

document.getElementById('mymailto').click();
...
<a href="mailto:...." id="mymailto" style="display:none"></a>
Franzo
quelle
Ich habe Folgendes versucht: `function Call () {document.getElementById ('mymailto'). Click (); } <a href="tel:+48123456" id="mymailto" style="display:none"> </a> `und der neue Tab wird weiterhin geöffnet.
Yoda
3

Die funktionierende Antwort für mich, getestet in Chrome, IE und Firefox zusammen mit Outlook, war diese

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

%0d%0a ist das neue Zeilensymbol des E-Mail-Textes in einem Mailto-Link

%20 ist das Leerzeichen, das verwendet werden sollte, aber es hat auch bei normalem Leerzeichen für mich funktioniert

Toskan
quelle
1

Tatsächlich besteht die Möglichkeit, die leere Seite zu vermeiden.

Ich habe herausgefunden, dass Sie einfach einen Iframe mit dem Mailto-Link in den Dom einfügen können. Dies funktioniert unter aktuellem Firefox / Chrome und IE (auch der IE zeigt einen kurzen Bestätigungsdialog an).

Mit jQuery habe ich Folgendes erhalten:

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);

        });
    }
}
s34n
quelle