[英]Can I use HTML5 to send a client-side email?
我想用HTML5發送電子郵件。 我不想強迫用戶打開郵件客戶端,我想直接從網頁發送電子郵件。
附帶說明一下,JavaScript是否有任何方法可以做到這一點? 我知道這可能是不可能的,只是想知道是否有任何狡猾的方法將其完全通過客戶端。
簡而言之,不是直接來自客戶端(黑客除外)。
您可以對服務器進行ajax調用並發送電子郵件。
從客戶端執行此操作而不使用郵件客戶端的問題很復雜。 例如,大多數消費者ISP都有自己的SMTP中繼,必須通過25端口傳輸所有出站郵件。 您的網站將無法獲取正確的信息來執行此操作。 其次,Web瀏覽器不了解SMTP協議,XMLHttpRequest對象也不了解。
因此,如果您是黑客的忍者,也許可以使用ActiveX,Java Applets或Flash來解決問題,但是基本上,您必須直接使用tcp套接字進行操作,並在該套接字上發出SMTP協議命令。
有許多障礙需要克服,實際上我不知道該怎么做,但是哪里有辦法。 如果發現黑客入侵,主要的瀏覽器供應商可能會迅速將其插入,請不要感到驚訝。
對的,這是可能的。 但不實用**請參閱編輯2
一些HTML5實現包括對websocket的支持,本質上是與服務器的tcp連接。 覆蓋一些發送/接收代碼,您可以構建SMTP客戶端。
實際上,似乎已經使用了nodejs和websocket支持來實現smtp客戶端...請參見此處...
就像標准的smtp客戶端一樣,您仍然需要一個smtp服務器,用戶名,密碼等才能使其正常工作。
使用這種方法發送垃圾郵件的可能性很小,因為您的smtp提供程序可以輕松地取消您的帳戶。
===編輯===
實際上,您可以構建服務器版本少的服務器,它還必須實現名稱服務器查找以查找mx記錄。 但是,任何體面的SMTP服務器都有維護垃圾郵件黑名單表的可能性,並且從隨機IP地址進行連接會看到通常標記為垃圾郵件的電子郵件。
與需要安全郵件連接的smtp服務器進行通信也可能很困難。
正如其他人提到的那樣,此實現存在惡意用途,例如發送垃圾郵件。 我想您可能是HTML5僵屍網絡的創建者,但我本以為您已經了解了大部分:)
===編輯2 ===
正如Mark At Ramp51所提到的,websocket需要握手。 這是我不知道的。 您將不得不破解websocket實現以繞過握手。
正確的方法是讓Web服務器轉發電子郵件。
這是不可能的。
相反,您應該使用AJAX在服務器上發送電子郵件。
來自官方資源:
它是如何工作的?
連接您的電子郵件服務從多種電子郵件服務中選擇。 我們支持事務電子郵件服務(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: 'john@doe.com',
message: 'This is awesome!'
};
emailjs.send(service_id,template_id,template_params);
所有現有的API都需要使用一個私鑰,您顯然不想在您的前端代碼中共享它。 特定服務通過僅允許發送預定義的模板來克服了這一問題,因此對於“與朋友共享”功能,您將創建一個名為“共享”的模板。
您不能僅使用JavaScript發送電子郵件。 您需要某種形式的服務器端處理(PHP,ASP等)來發送實際的電子郵件。
這里有一個很好的教程來設置ajax表單: http : //net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/
它不包括用於發送電子郵件的PHP(或ASP等),但是那里有許多教程介紹如何使用PHP發送電子郵件。
您不能僅通過客戶端代碼來做到這一點。
您可以通過服務器回調AJAX來實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.