Invocar / hacer clic en un enlace mailto con JQuery / JavaScript

81

Me gustaría invocar un enlace mailto desde JavaScript; es decir, me gustaría un método que me permita abrir el cliente de correo electrónico en la PC del usuario, exactamente como si hubieran hecho clic en un enlace mailto normal.

¿Cómo puedo hacer esto?

Justin
fuente
Ejemplo de trabajo: jsfiddle.net/gaboom/h81qov5g
sibidiba
1
try<button onclick="window.open('mailto:KingRider<[email protected]>');">Contact me</button>
KingRider

Respuestas:

138

Puedes usar window.location.hrefaquí, así:

window.location.href = "mailto:[email protected]";
Nick Craver
fuente
3
y como anexaría un cuerpo? mailto: [email protected]? body = myBody y mailto: [email protected]& myBody no me funciona ...
Max
@jipiboily, ¿podría explicarnos más? ¿Qué navegador has probado y no funcionó?
Adi
@Adnan, por lo que recuerdo, no funciona con Opera y tal vez con más navegadores. Según sus necesidades, es posible que pueda solucionar ese problema.
jipiboily
@Rolf Acabo de probar en el último establo de Chrome, todavía funciona.
Nick Craver
9
Max, ya han de haber dado cuenta de esto, pero para los futuros lectores: window.location.href = 'mailto:[email protected]&subject=Hello there&body=This is the body';. No ?y no &amp;, solo&
cssyphus
9

Puede evitar el problema de la página en blanco discutido anteriormente usando en su lugar .click () con un enlace en la página:

document.getElementById('mymailto').click();
...
<a href="mailto:...." id="mymailto" style="display:none"></a>
franzo
fuente
Intenté esto: `function Call () {document.getElementById ('mymailto'). Click (); } <a href="tel:+48123456" id="mymailto" style="display:none"> </a> `y la nueva pestaña aún se abre.
Yoda
3

la respuesta de trabajo para mí, probada en Chrome, IE y Firefox junto con Outlook fue esta

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

%0d%0a es el símbolo de nueva línea del cuerpo del correo electrónico en un enlace mailto

%20 es el símbolo de espacio que debería usarse, pero también me funcionó con el espacio normal

Toskan
fuente
1

De hecho, existe la posibilidad de evitar la página en blanco.

Descubrí que simplemente puede insertar un iframe con el enlace mailto en el dom. Esto funciona en Firefox / Chrome e IE actuales (también IE mostrará un breve cuadro de diálogo de confirmación).

Usando jQuery, obtuve esto:

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
fuente