ユーザーが特定のテキストを自動的に入力してメールを送信できるChrome拡張機能を作成したいと思います。mailto:
リンクを使用していましたが、1024文字を超える文字列を処理できず、HTMLリンクを作成できません。電子メールページ内から(おそらくローカルストレージを使用して)、追加のテキストやHTMLリンクを入力する方法はありますか?
1 に答える
残念ながら、私の知る限り、ネイティブの chrome/javascript API はありません。私はいくつかの検索を行い、誰かが取り組んでいるオープンソースのオプションを見つけましたが、それは非常に骨の折れるものでした. 彼は、他の人が彼と一緒に飛び乗って、それを肉付けすることを望んでいました.
これを試しているようです:
URL を作成するには、&body= タグを使用してメッセージを URL エンコードできますが、長さに制限があります。chrome を使用して新しいタグを開く方法を既に理解しているようで、変更された URL 文字列だけを使用して短いメールを作成できました。私は最初のクロム拡張でそれに似たことをしました。こんな感じでした。
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 を追加することができます。簡単にするために、テキストのみを append 内に配置します。
$("iframe#:1t4").find("body.editable").append('<p>My long email body</p>');
そこからクリックイベントを実行できると思いますが、それをユーザーに任せることもできます。