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?



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

Respuestas:


138

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

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

3
y como anexaría un cuerpo? mailto: address@dmail.com? body = myBody y mailto: address@dmail.com& 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:address@dmail.com&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>

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:address@dmail.com?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


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

        });
    }
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.