Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以使用HTML5发送客户端电子邮件吗?_Javascript_Email_Html_Client Side - Fatal编程技术网

Javascript 我可以使用HTML5发送客户端电子邮件吗?

Javascript 我可以使用HTML5发送客户端电子邮件吗?,javascript,email,html,client-side,Javascript,Email,Html,Client Side,我想用HTML5发送一封电子邮件。我不想强迫用户打开邮件客户端,我想直接从网页发送电子邮件 另一方面,是否有任何方法可以在JavaScript中实现这一点?我知道这可能是不可能的,只是想知道是否有任何巧妙的方法可以完全通过客户机实现。这是不可能的 相反,您应该使用AJAX在服务器上发送电子邮件。您不能纯粹通过客户端代码来完成 您可以通过服务器回调AJAX来实现这一点。简言之,不可以直接从客户端(不包括黑客) 您可以对服务器进行ajax调用并发送电子邮件 从客户端执行此操作而不使用邮件客户端的问题

我想用HTML5发送一封电子邮件。我不想强迫用户打开邮件客户端,我想直接从网页发送电子邮件

另一方面,是否有任何方法可以在JavaScript中实现这一点?我知道这可能是不可能的,只是想知道是否有任何巧妙的方法可以完全通过客户机实现。

这是不可能的


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

您不能纯粹通过客户端代码来完成


您可以通过服务器回调AJAX来实现这一点。

简言之,不可以直接从客户端(不包括黑客)

您可以对服务器进行ajax调用并发送电子邮件

从客户端执行此操作而不使用邮件客户端的问题很复杂。例如,大多数消费者ISP都有自己的SMTP中继,端口25上的所有出站邮件都必须通过该中继进行传输。您的网站将很难获得正确的信息来做到这一点。其次,webbrowser不理解SMTP协议,XMLHttpRequest对象也不理解

所以,如果你是一个黑客忍者,也许你可以通过ActiveX、Java小程序或flash来解决问题,但基本上你必须直接使用tcp套接字进行操作,并通过该套接字发出SMTP协议命令


有很多障碍要克服,事实上我不知道如何去做,但有志者事竟成。不要惊讶,如果你发现了一个黑客,它可能会很快被主要的浏览器供应商插入。

你不能单独使用JavaScript发送电子邮件。您需要某种形式的服务器端处理(PHP、ASP等)来发送实际的电子邮件

这里有一个关于设置ajax表单的好教程:


它不包括用于发送电子邮件的PHP(或ASP等),但有大量教程介绍如何使用PHP发送电子邮件。

是的,这是可能的。但不实用**见编辑2

一些HTML5实现包括对websockets的支持,基本上是与服务器的tcp连接。覆盖一些发送/接收代码,您可以构建SMTP客户端

事实上,nodejs和websocket支持似乎已用于实现smtp客户端

您仍然需要smtp服务器、用户名、密码等,就像标准smtp客户端一样,才能使其正常工作

对垃圾邮件使用此方法不太可能,因为您的smtp提供商可以轻松取消您的帐户

==编辑===

实际上,您可以构建一个无服务器版本,它还必须实现名称服务器查找以查找mx记录。然而,任何像样的SMTP服务器都有可能维护垃圾邮件列表黑名单表,并且从随机ip地址连接的邮件通常会被标记为垃圾邮件

此外,与需要安全邮件连接的smtp服务器通信可能会很困难

正如其他人提到的,这种实现存在恶意使用,比如发送垃圾邮件。我想你可能是一个HTML5僵尸网络的创造者,但我原以为你已经知道了其中的大部分:)

==编辑2===

正如Ramp51中提到的标记,WebSocket需要握手。这是我不知道的事情。您必须破解websocket实现以绕过握手

正确的方法是让web服务器转发电子邮件。

来自官方资源:

它是如何工作的

  • 连接您的电子邮件服务 从各种各样的电子邮件服务中进行选择。我们都支持 事务性电子邮件服务(Mailgun、Mailjet、Mandrill、SendGrid、Amazon SES和邮戳)和个人电子邮件服务(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都需要使用密钥,您显然不希望在前端代码中共享密钥。指定的服务通过只允许发送预定义的模板来克服此问题,因此对于“与朋友共享”功能,您可以创建一个名为“共享”的模板。

    可能是恶意的,如果可能的话,您的web浏览器可以用来发送垃圾邮件。同意。浏览器供应商会不惜一切代价阻止这种情况发生。我认为这是可能的。见下面的帖子。它可能被恶意使用,但我认为浏览器供应商不一定能阻止它。实际上,像谷歌这样的公司如果试图使用这些技术设置smtp僵尸网络,就会将网站列为恶意软件。安全漏洞:如果您连接的smtp服务器需要密码验证,那么您必须向客户端公开该密码(及其对应的用户名)。即,连接到用户的web浏览器。如果您的用户正在注意并提取您的密码,那么他们将能够使用您的SMTP服务器发送垃圾邮件,直到您重置密码。他们甚至可以使用密码和用户名更改服务器上的密码,将您锁定在外。编辑:除非你的SMTP服务器支持令牌,就像smtpjs.com说的那样。你可以在忍者列表中添加对Adobe Reader的引用。它充满了漏洞,我相信有人能想出如何向客户发送电子邮件……;)谢谢你对握手的指点,我已经有一段时间没看WebSocket了。没问题,伙计,这实际上是对我自己的一次警醒。在我开始阅读之前,我对它们也有同样的看法。我认为另一种非标准的可能性是使用Firefox的套接字功能,同时允许一路使用JavaScript(尽管只是Firefox,并且要求用户安装附加组件)。如果