簡體   English   中英

使用 JQuery/JavaScript 調用/單擊 mailto 鏈接

[英]Invoke / click a mailto link with JQuery / JavaScript

我想從 JavaScript 調用一個mailto鏈接 - 那就是我想要一種方法,它允許我在用戶 PC 上打開電子郵件客戶端,就像他們點擊了一個普通的 mailto 鏈接一樣。

我怎樣才能做到這一點?

你可以在這里使用window.location.href ,如下所示:

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

您可以通過使用.click()和頁面上的鏈接來避免上面討論的空白頁問題:

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

我的工作答案,在chrome,IE和firefox以及outlook中進行測試就是這個

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

%0d%0a是mailto鏈接中電子郵件正文的新行符號

%20是應該使用的空格符號,但它對我和普通空間都有效

更好用

window.open('mailto:address@mail.com?subject=sub&body=this is body')

如果我們使用window.location.href chrome 瀏覽器在網絡選項卡中出現錯誤,並顯示臨時標頭 Upgrade-Insecure-Requests: 1

這是一個老問題,但我結合了幾個 Stack Overflows 來提出這個函數:

//this.MailTo is an array of Email addresses
//this.MailSubject is a free text (unsafe) Subject text input
//this.MailBody is a free text (unsafe) Body input (textarea)
//SpawnMail will URL encode /n, ", and ', append an anchor element with the mailto, and click it to spawn the mail in the users default mail program
SpawnMail: function(){
    $("#MyMailTo").remove();
    var MailList="";
    for(i in this.MailTo)
        MailList+=this.MailTo[i]+";";
    var NewSubject=this.MailSubject.replace(/\n/g, "%0d%0a");
    NewSubject=NewSubject.replace(/"/g, "%22");
    NewSubject=NewSubject.replace(/'/g, "%27");
    var NewBody=this.MailBody.replace(/\n/g, "%0d%0a");
    NewBody=NewBody.replace(/"/g, "%22");
    NewBody=NewBody.replace(/'/g, "%27");
    $("#mainNavBar").after("<a id='MyMailTo' style='display:none;' href='mailto:"+MailList+"?subject="+NewSubject+"&body="+NewBody+"'>&nbsp;</a>");
    document.getElementById('MyMailTo').click();
}

關於這個(以及我計划如何使用它)很酷的部分是我可以把它放在一個循環中,並將單獨的消息拆分給數組中的每個人,或者讓每個人都在一起(這是這個函數目前所做的)。 無論如何感謝您的提示@Toskan

后續- 請注意,新的 HTML5 標准不允許在沒有“必需的用戶手勢”的情況下循環 mailto(或其他與彈出窗口相關的 js)。 這里很酷的文章: https : //github.com/WICG/interventions/issues/12所以你不能用它來批量生成單獨的電子郵件,但它在當前設計中可以很好地發送給許多人。

實際上,有可能避免空白頁面。

我發現,你可以簡單地將一個iframe與mailto鏈接插入到dom中。 這適用於當前的Firefox / Chrome和IE(IE也將顯示一個簡短的確認對話框)。

使用jQuery,我得到了這個:

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

        });
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM