3

我想制作一个 Chrome 扩展程序,让用户发送带有自动填充某些文本的电子邮件。我使用的是mailto:链接,但它不能处理超过 1024 个字符的字符串,也不能创建 html 链接。有没有办法可以从电子邮件页面(可能使用本地存储)中填写其他文本甚至是 HTML 链接?

4

1 回答 1

1

不幸的是,据我所知,没有原生的 chrome/javascript API。我做了一些搜索,发现有人正在研究一个开源选项,但它非常简陋。他希望其他人能和他一起跳起来,充实它。

听起来你正在尝试这个:

要创建 URL,您可以使用 &body= 标签和 url 对消息进行编码,但是长度有限制。听起来您已经知道如何使用 chrome 打开新标签,因此您可以使用修改后的 URL 字符串来创建更短的电子邮件。我在我的第一个 chrome 扩展中做了类似的事情。它看起来像这样。

function sendToUrl(){ chrome.tabs.query({active:true, windowId: chrome.windows.WINDOW_ID_CURRENT}, function(tab) {
    //while this seems to generate the URL correctly, gmail limits how long the body text can be therefore this is not a viable solution
    //Also there is no javascript API therefore there is no hope of sending an email.

    //Need to loop through each tab and not just the first one
    var currentTab = tab[0];
    var tabInformation = RPATH.getTab(currentTab.id);

        var mailUrl = "https://mail.google.com/mail/?view=cm&fs=1&tf=1&su=My%20Subject&to=";
        // grab the email addresss from popup.html
        mailUrl += document.getElementById("to").value + "&body=";

        // get formBody from popup.html
        var formBody = document.getElementById("body").value;
...
//I did some other stuff that isn't relevant here
...
        //Concat final mailto url
        mailUrl = mailUrl + formBody;
        chrome.extension.sendMessage({mailUrl: mailUrl}, function(response){ console.log(response.farewell);});
});}

对于更长的电子邮件正文

但这只会让你成功一半。我能想到的唯一选择是拆分打开的选项卡并填写电子邮件正文。您可以在页面加载完成后使用追加修改电子邮件正文。这可能看起来像我下面的内容。请注意,我选择了 iframe 元素,然后在其中找到 body 标签,最后在标签打开后添加一些 html。请注意,电子邮件正文只不过是 html,因此 div、tr、br 等标签都应该适用于创建格式良好的电子邮件。在我之前的示例中,我将表单中的文本作为字符串提取出来。您可以改为使用 jquery 在您的 popup.html 页面上克隆 html 并附加克隆的 html。为简单起见,我只将文本放在追加内容中。

$("iframe#:1t4").find("body.editable").append('<p>My long email body</p>');

我想从那里你可以运行一个点击事件,但你也可以把它留给用户。

于 2012-10-19T17:15:40.920 回答