2011-03-29 270 views
6

我想用HTML5发送电子邮件。我不想强制用户打开邮件客户端,我想直接从网页发送邮件。我可以使用HTML5发送客户端电子邮件吗?

在附注中,有什么办法可以在JavaScript中做到这一点?我知道这可能是不可能的,只是想知道是否有任何狡猾的方式来完全通过客户端。

+5

可能是恶意的,如果可能的话,您的网页浏览器可能被用来发送垃圾邮件。 – dvhh 2011-03-29 03:00:38

+0

同意。浏览器厂商会不惜一切代价来防止这种情况发生。 – 2011-03-29 03:03:55

+0

我认为这是可能的。看到下面的帖子。它可能被恶意使用,但我不认为浏览器供应商可能会阻止它。实际上,如果Google试图使用这些技术设置smtp僵尸网络,它会将某个网站列为恶意软件。 – JTew 2011-03-29 04:50:33

回答

7

是的,这是可能的。但不实际**请参阅编辑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服务器转发电子邮件。

+0

那么,基本上把客户端本身变成出站SMTP服务器?听起来像它可以工作。但是,您是否需要特殊权限才能访问MX记录?我想你将不得不刮一个提供它们的网站。我感兴趣 - 你认为我应该从哪里开始? – Gus 2011-03-29 04:14:02

+0

域名查询只是另一种可以使用websockets的协议。你也可以实现这一点。有人可能已经做到了,你... https://github.com/skampler/ndns – JTew 2011-03-29 04:47:59

+1

如果没有协议要求的WebSocket握手,我会倾向于同意你的看法,如果你看看协议握手在这篇文章的顶部http://en.wikipedia.org/wiki/WebSockets当前的SMTP协议不支持这个,所以你会依赖于你连接到的SMTP服务器,以某种方式封装的东西可以满足这个握手。此外,由于安全问题,所有预定支持它的浏览器都放弃了支持。简单来说,WebSocket和tcp套接字并不相同。 – 2011-03-29 05:27:43

3

这是不可能的。

相反,您应该使用AJAX在服务器上发送电子邮件。

0

你不能纯粹通过客户端代码。

你可以用服务器回调AJAX来做到这一点。

12

总之NO不直接来自客户端(不包括黑客)。

你可以打一个ajax调用你的服务器并发送一封邮件。

从客户端做起而不使用邮件客户端的问题很复杂。例如,大多数消费者ISP都有自己的SMTP中继,必须通过端口25传输所有出站邮件。您的网站将无法获得适当的信息来执行此操作。其次,webbrowser不理解SMTP协议,也不了解XMLHttpRequest对象。因此,如果你是黑客忍者,也许你可以用ActiveX,Java Applet或flash来弄清楚什么,但是你基本上必须直接用tcp套接字来操作,并且通过那个套接字发出SMTP协议命令。

有许多障碍需要克服,实际上我不知道如何去做,但哪里会有方法。不要惊讶,如果你确实发现黑客,它可能会被主要的浏览器供应商迅速插入。

+0

您可能会在您的忍者列表中添加对Adobe Reader的引用。它充满了漏洞我敢肯定有人可以弄清楚如何打电话给客户端的电子邮件客户端...;) – NotMe 2011-03-29 03:56:54

+0

感谢握手指针,自从我看过websocket以来已经有一段时间了。 – JTew 2011-03-30 05:40:45

+1

没问题的人,实际上这是一个叫醒自己的人。在我读到他们之前,我对他们有相同的看法。 – 2011-03-30 17:33:13

-2

Send email directly from Javascript

来自官方的资源:

它是如何工作的?

  1. 从各种各样的电子邮件服务连接电子邮件服务 选择。我们支持 交易电子邮件服务(Mailgun,Mailjet,Mandrill,SendGrid,Amazon SES和Postmark)以及个人电子邮件服务(AOL,Gmail,FastMail,iCloud,Mail.ru,Outlook,Yahoo,Yandex和Zoho)。

  2. 创建电子邮件模板 从我们的模板设计列表中进行选择,或轻松构建您自己的模板设计。 模板是参数化的,所以你可以通过Javascript进一步定制它们。

  3. 用我们的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”的模板。

+1

虽然这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/16966876) – Bugs 2017-08-08 09:42:02

+0

“来自官方资源” - 这里的“官方”一词似乎意味着某种网络标准权威。你在这里做的是使用第三方服务,将(作为交换给他们的密码到你的SMTP服务器 - 没有别的,那么除了收集你的电子邮件地址和其他营销信息和你的访客?) - 如果您向他们发送Ajax请求,则发送电子邮件。这与Mark Ramp51给出的答案完全相同,但建议使用第三方服务。 – Quentin 2018-01-24 06:52:28

相关问题