Invoke / click a mailto link with JQuery / JavaScript


Solution 1

You can use window.location.href here, like this:

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

Solution 2

You can avoid the blank page issue discussed above by instead using .click() with a link on the page:

<a href="mailto:...." id="mymailto" style="display:none"></a>

Solution 3

the working answer for me, tested in chrome, IE and firefox together with outlook was this

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

%0d%0a is the new line symbol of the email body in a mailto link

%20 is the space symbol that should be used, but it worked for me as well with normal space

Solution 4

Actually, there is a possibillity to avoid the empty page.

I found out, you can simply insert an iframe with the mailto link into the dom. This works on current Firefox/Chrome and IE (also IE will display a short confirm dialog).

Using jQuery, I got this:

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) {           {
            // create the iframe
            //remove the iframe, we don't need it any more
            }, 500);


Solution 5

Better to use'mailto:[email protected]?subject=sub&body=this is body')

If we use window.location.href chrome browser is having error in network tab with Provisional headers are shown Upgrade-Insecure-Requests: 1

Author by


html-query-plan - Display SQL Server Execution Plans in HTML

Updated on June 15, 2022


  • Justin
    Justin less than a minute

    I'd like to invoke a mailto link from JavaScript - that is I'd like a method that allows me to open the email client on the users PC, exactly as if they had clicked on a normal mailto link.

    How can I do this?