我想用HTML5发送电子邮件。我不想强迫用户打开邮件客户端,我想直接从网页发送电子邮件。
另外,在JavaScript中有什么办法可以做到这一点吗?我知道这可能是不可能的,只是想知道是否有任何狡猾的方法可以完全通过客户端。
答案 0 :(得分:13)
简而言之,不是直接来自客户(不包括黑客)。
您可以对服务器进行ajax调用并发送电子邮件。
从客户端执行此操作而不使用邮件客户端的问题很复杂。例如,大多数消费者ISP都有自己的SMTP中继,必须传输端口25上的所有出站邮件。您的网站无法获得正确的信息来执行此操作。其次,webbrowser不理解SMTP协议,也不理解XMLHttpRequest对象。
因此,如果您是黑客忍者,也许您可以使用ActiveX,Java Applet或Flash来解决问题,但您基本上必须使用tcp套接字直接操作并在该套接字上发出SMTP协议命令。
要克服许多障碍,事实上我不知道该怎么做,但哪里有可能会有办法。不要惊讶的是,如果你发现黑客攻击,它可能会被主要的浏览器供应商迅速插入。
答案 1 :(得分:8)
是的,这是可能的。但不实用**见编辑2
一些HTML5实现包括对websockets的支持,实质上是与服务器的tcp连接。覆盖一些send / recv代码,您可以构建一个SMTP客户端。
事实上,似乎已经使用了nodejs和websocket支持来实现smtp客户端... see here ...
您仍然需要一个smtp服务器,用户名,密码等,就像标准的smtp客户端一样,以便它可以工作。
使用此方法进行垃圾邮件不太可能,因为您的smtp提供商可以轻松取消您的帐户。
===编辑===
实际上,你可以构建一个服务器较少的版本,它还必须实现名称服务器查找以查找mx记录。但是,任何体面的SMTP服务器都可能维护垃圾邮件列表黑名单表,并且从随机IP地址连接会看到通常标记为垃圾邮件的电子邮件。
与需要安全邮件连接的smtp服务器交谈也很困难。
正如其他人所提到的,这种实现有恶意用途,比如发送垃圾邮件。我想你有可能成为一个HTML5僵尸网络创建者,但我想你已经知道了大部分内容:)
===编辑2 ===
正如Mark At Ramp51所述,websockets需要握手。这是我不知道的事情。您必须破解websocket实现以绕过握手。
正确的方法是让网络服务器转发电子邮件。
答案 2 :(得分:2)
这是不可能的。
相反,您应该使用AJAX在服务器上发送电子邮件。
答案 3 :(得分:1)
您无法单独使用JavaScript发送电子邮件。您需要某种形式的服务器端处理(PHP,ASP等)来发送实际的电子邮件。
这里有一个关于设置ajax表单的好教程: http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/
它不包括用于发送电子邮件的PHP(或ASP等),但是有很多关于如何使用PHP发送电子邮件的教程。
答案 4 :(得分:1)
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: 'john@doe.com',
message: 'This is awesome!'
};
emailjs.send(service_id,template_id,template_params);
所有现有API都需要使用密钥,您显然不希望在前端代码中共享密钥。指定的服务通过仅允许发送预定义模板来克服这一点,因此对于“与朋友共享”功能,您将创建一个名为“共享”的模板。
答案 5 :(得分:0)
你不能完全通过客户端代码来完成。
您可以使用服务器回调AJAX。