簡體   English   中英

從 Chrome 擴展程序發送電子郵件

[英]Sending email from Chrome extension

我不希望用戶必須執行或確認任何操作,因為這會破壞總體思路。 換句話說,mailto 是不可能的。

是否可以從 Chrome 擴展程序通過 JavaScript 在客戶端發送電子郵件,而不會破壞用戶體驗或添加任何 JavaScript 擴展程序? 如果是這樣怎么辦?

我感覺這將是不可能的。

我了解到有一個 chrome.sockets.tcp API 可能可用,知道如何使用嗎?

要發送電子郵件,程序需要通過 TCP 連接到 SMTP 服務器並根據SMTP 協議與它通信

  1. 無法直接使用 JavaScript / HTML5 API 發送電子郵件。

瀏覽器不公開與 TCP 套接字直接通信的能力。

雖然原則上您可以啟動到任何端口的連接,但瀏覽器將“進行對話”並且不會“說出”SMTP。 它可以執行 HTTP,也可以執行 WebSocket,但不能執行您想要的協議。

  1. 無法直接從 Chrome擴展程序發送電子郵件。

雖然Chrome 擴展 API增強了 Web API 提供的功能,但它們仍然沒有為您提供與服務器“交談”的機會。

  1. 直接從 Chrome應用程序發送電子郵件是可能的,但並不容易。

Chrome 應用程序 API與擴展程序不同,但更重要的是,它們包括通過chrome.sockets.tcp API對 TCP 套接字的原始訪問。

請注意“原始訪問”一詞。 你必須從頭開始用 JavaScript 實現你自己的郵件客戶端。 可能是一個起點。

根據您想要實現的目標,Chrome 應用程序可能是可接受的解決方案。 或者,如果您需要擴展程序 API 和應用程序 API,您可以創建兩者並在它們之間傳遞消息。

  1. 使用Native Messaging 主機,一切皆有可能。

作為一個本機應用程序,您可以從本機主機應用程序執行任何操作。 Chrome 擴展程序/應用程序將能夠使用必要的數據調用它。

但是,如果您決定發布擴展,這將限制您的部署選項; 您將不得不擔心便攜性,並且無法將本機主機上傳到Web Store; 你需要一個單獨的安裝程序。

並且您的消息傳遞主機仍然需要實現您自己的 SMTP 客戶端,盡管為此您有更廣泛的現成庫選擇。

  1. 使用外部 API 一切皆有可能,但保護通信將是一個挑戰。

如果您的擴展程序可以與之交談的網站可以代表您發送電子郵件,您可以讓您的擴展程序觸發這樣的 API。

但是,將特定於擴展的秘密隱藏到擴展中以限制 API 的使用實際上是不可能的。

您可以讓用戶使用一些憑據登錄到這樣的服務,然后將這些用戶特定的憑據存儲在已安裝的實例中,例如 OAuth 令牌。 這基本上將問題轉移到您必須控制(或與之達成協議)的 Web 服務。

如需額外閱讀,請參閱Apps vs Extensions指南。

我找到了一種從 Chrome 擴展程序發送電子郵件的簡單方法(盡管請參閱下面的一個重要警告):

  • 在 ifttt.com 上,創建一個帶有“Webhooks”服務的小程序。
  • 選擇“接收網絡請求”作為觸發器,然后選擇一個事件名稱(下面的$EVENT_NAME )。
  • 為“然后”選擇“Gmail”服務,並使用“發送電子郵件”作為操作。
  • 使用{{VALUE1}}作為“收件人地址”。
  • 在主題和正文中的任何位置使用{{VALUE2}}{{VALUE3}} (您將從 Chrome 擴展程序傳遞的值)。
  • 轉到ifttt.com/maker_webhooks並單擊“文檔”以獲取您的密鑰(下面的$KEY )。
  • 讓你的瀏覽器擴展程序作出的請求https://maker.ifttt.com/trigger/$EVENT_NAME/with/key/$KEY?value1=$TARGET_EMAIL_ADDRESS&value2=$SOME_OTHER_VALUE&value3=$SOME_OTHER_VALUE (請確保調用encodeURIComponent對每個值)。

但是,這有一個非常嚴重的問題:任何人都可以發現該 URL(通過查看您的 Chrome 擴展程序代碼)並使用它來使用您的模板發送電子郵件。 (在我的例子中,我只將我的擴展發布到了一個受信任的組。)也許你可以在代碼中對 URL 進行足夠的模糊處理,這樣它就不容易被發現,但我不知道實際制作的方法它安全。

暫無
暫無

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

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