Gọi / nhấp vào liên kết mailto bằng JQuery / JavaScript


81

Tôi muốn gọi một liên kết mailto từ JavaScript - đó là tôi muốn một phương pháp cho phép tôi mở ứng dụng email trên PC của người dùng, chính xác như thể họ đã nhấp vào một liên kết mailto bình thường.

Tôi có thể làm cái này như thế nào?


Ví dụ làm việc: jsfiddle.net/gaboom/h81qov5g
sibidiba

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

Câu trả lời:


138

Bạn có thể sử dụng window.location.hrefở đây, như thế này:

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

3
và tôi sẽ nối một cơ thể như thế nào? mailto: address@dmail.com? body = myBody và mailto: address@dmail.com& myBody không hoạt động với tôi ...
Tối đa

@jipiboily, bạn có thể giải thích thêm được không? Bạn đã thử trình duyệt nào và nó không hoạt động?
Adi

@Adnan từ những gì tôi nhớ nó không hoạt động với Opera và có thể nhiều trình duyệt hơn. Tùy thuộc vào nhu cầu của bạn, bạn có thể giải quyết vấn đề đó.
jipiboily 19/11/12

@Rolf Tôi vừa thử nghiệm trong bản ổn định chrome mới nhất, vẫn hoạt động.
Nick Craver

9
Max, bạn đã có thể tìm ra điều này, nhưng đối với độc giả trong tương lai: window.location.href = 'mailto:address@dmail.com&subject=Hello there&body=This is the body';. Không phải ?và không &amp;, chỉ&
cssyphus

9

Bạn có thể tránh vấn đề trang trống được thảo luận ở trên bằng cách sử dụng .click () với một liên kết trên trang:

document.getElementById('mymailto').click();
...
<a href="mailto:...." id="mymailto" style="display:none"></a>

Tôi đã thử điều này: `function Call () {document.getElementById ('mymailto'). Click (); } <a href="tel:+48123456" id="mymailto" style="display:none"> </a> `và tab mới vẫn mở.
Yoda

3

câu trả lời hiệu quả cho tôi, được thử nghiệm trong chrome, IE và firefox cùng với outlook là

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

%0d%0a là biểu tượng dòng mới của nội dung email trong một liên kết mailto

%20 là biểu tượng không gian nên được sử dụng, nhưng nó cũng hoạt động đối với tôi với không gian bình thường


1

Trên thực tế, có một khả năng để tránh trang trống.

Tôi phát hiện ra, bạn có thể chỉ cần chèn một iframe với liên kết mailto vào dom. Tính năng này hoạt động trên Firefox / Chrome và IE hiện tại (IE cũng sẽ hiển thị hộp thoại xác nhận ngắn).

Sử dụng jQuery, tôi nhận được điều này:

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

        });
    }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.