我想用HTML5發送電子郵件。我不想強制用戶打開郵件客戶端,我想直接從網頁發送郵件。我可以使用HTML5發送客戶端電子郵件嗎?
在附註中,有什麼辦法可以在JavaScript中做到這一點?我知道這可能是不可能的,只是想知道是否有任何狡猾的方式來完全通過客戶端。
我想用HTML5發送電子郵件。我不想強制用戶打開郵件客戶端,我想直接從網頁發送郵件。我可以使用HTML5發送客戶端電子郵件嗎?
在附註中,有什麼辦法可以在JavaScript中做到這一點?我知道這可能是不可能的,只是想知道是否有任何狡猾的方式來完全通過客戶端。
是的,這是可能的。但不實際**請參閱編輯2
某些HTML5實現包括對websocket的支持,實質上是對服務器的tcp連接。覆蓋一些send/recv代碼,你可以建立一個SMTP客戶端。
事實上,它看起來像的NodeJS和WebSocket的支持已經被用來實現一個SMTP客戶端... see here ...
你仍然需要一個SMTP服務器,用戶名,密碼等,就像一個標準的SMTP客戶端,以便它工作。
對垃圾郵件使用這種方法是不可能的,因爲您的smtp提供商可以輕鬆取消您的帳戶。
===編輯===
其實你可以建立一個服務器版本的少,這也將必須執行域名服務器查找找到MX記錄。然而,有機會,任何體面的SMTP服務器維護垃圾郵件黑名單表,並從隨機IP地址連接將看到通常被標記爲垃圾郵件的電子郵件。
還需要與需要安全郵件連接的smtp服務器通話可能很困難。
正如其他人已經提到的那樣,這種實現有惡意用途,例如發送垃圾郵件。我想這可能是您可能是一個HTML5僵屍網絡的創造者,但我本來以爲你會知道大部分本已:)
=== EDIT 2 ===
正如馬克在Ramp51提到,握手需要使用websockets。這是我不知道的。你必須破解websocket實現來繞過握手。
正確的方法是讓Web服務器轉發電子郵件。
那麼,基本上把客戶端本身變成出站SMTP服務器?聽起來像它可以工作。但是,您是否需要特殊權限才能訪問MX記錄?我想你將不得不刮一個提供它們的網站。我感興趣 - 你認爲我應該從哪裏開始? – Gus 2011-03-29 04:14:02
域名查詢只是另一種可以使用websockets的協議。你也可以實現這一點。有人可能已經做到了,你... https://github.com/skampler/ndns – JTew 2011-03-29 04:47:59
如果沒有協議要求的WebSocket握手,我會傾向於同意你的看法,如果你看看協議握手在這篇文章的頂部http://en.wikipedia.org/wiki/WebSockets當前的SMTP協議不支持這個,所以你會依賴於你連接到的SMTP服務器,以某種方式封裝的東西可以滿足這個握手。此外,由於安全問題,所有預定支持它的瀏覽器都放棄了支持。簡單來說,WebSocket和tcp套接字並不相同。 – 2011-03-29 05:27:43
這是不可能的。
相反,您應該使用AJAX在服務器上發送電子郵件。
你不能純粹通過客戶端代碼。
你可以用服務器回調AJAX來做到這一點。
總之NO不直接來自客戶端(不包括黑客)。
你可以打一個ajax調用你的服務器併發送一封郵件。
從客戶端做起而不使用郵件客戶端的問題很複雜。例如,大多數消費者ISP都有自己的SMTP中繼,必須通過端口25傳輸所有出站郵件。您的網站將無法獲得適當的信息來執行此操作。其次,webbrowser不理解SMTP協議,也不瞭解XMLHttpRequest對象。因此,如果你是黑客忍者,也許你可以用ActiveX,Java Applet或flash來弄清楚什麼,但是你基本上必須直接用tcp套接字來操作,並且通過那個套接字發出SMTP協議命令。
有許多障礙需要克服,實際上我不知道如何去做,但哪裏會有方法。不要驚訝,如果你確實發現黑客,它可能會被主要的瀏覽器供應商迅速插入。
您無法單獨使用JavaScript發送電子郵件。您需要某種形式的服務器端處理(PHP,ASP等)來發送實際的電子郵件。
有在這裏建立一個Ajax表單一個很好的教程: http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/
它不包括PHP(或ASP等)發送郵件,但也有很多教程了那裏怎麼樣使用PHP發送電子郵件。
Send email directly from Javascript
來自官方的資源:
它是如何工作的?
從各種各樣的電子郵件服務連接電子郵件服務 選擇。我們支持 交易電子郵件服務(Mailgun,Mailjet,Mandrill,SendGrid,Amazon SES和Postmark)以及個人電子郵件服務(AOL,Gmail,FastMail,iCloud,Mail.ru,Outlook,Yahoo,Yandex和Zoho)。
創建電子郵件模板 從我們的模板設計列表中進行選擇,或輕鬆構建您自己的模板設計。 模板是參數化的,所以你可以通過Javascript進一步定製它們。
用我們的Javascript API發送郵件 添加我們的Javscript SDK,並開始發送電子郵件!
下面是一個典型的呼叫的樣子:
var service_id = 'my_mandrill';
var template_id = 'feedback';
var template_params = {
name: 'John',
reply_email: '[email protected]',
message: 'This is awesome!'
};
emailjs.send(service_id,template_id,template_params);
所有現有的API需要使用密鑰,你顯然不希望在您的前端代碼共享。指定的服務通過只發送預定義的模板來克服這一點,因此對於「與朋友分享」功能,您可以創建一個名爲「share」的模板。
雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/16966876) – Bugs 2017-08-08 09:42:02
「來自官方資源」 - 這裏的「官方」一詞似乎意味着某種網絡標準權威。你在這裏做的是使用第三方服務,將(作爲交換給他們的密碼到你的SMTP服務器 - 沒有別的,那麼除了收集你的電子郵件地址和其他營銷信息和你的訪客?) - 如果您向他們發送Ajax請求,則發送電子郵件。這與Mark Ramp51給出的答案完全相同,但建議使用第三方服務。 – Quentin 2018-01-24 06:52:28
可能是惡意的,如果可能的話,您的網頁瀏覽器可能被用來發送垃圾郵件。 – dvhh 2011-03-29 03:00:38
同意。瀏覽器廠商會不惜一切代價來防止這種情況發生。 – 2011-03-29 03:03:55
我認爲這是可能的。看到下面的帖子。它可能被惡意使用,但我不認爲瀏覽器供應商可能會阻止它。實際上,如果Google試圖使用這些技術設置smtp僵屍網絡,它會將某個網站列爲惡意軟件。 – JTew 2011-03-29 04:50:33