我想制作一个 Chrome 扩展程序,让用户发送带有自动填充某些文本的电子邮件。我使用的是mailto:
链接,但它不能处理超过 1024 个字符的字符串,也不能创建 html 链接。有没有办法可以从电子邮件页面(可能使用本地存储)中填写其他文本甚至是 HTML 链接?
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>');
我想从那里你可以运行一个点击事件,但你也可以把它留给用户。