我能使用JavaScript发送电子邮件吗?

14

是否可能仅使用JavaScript发送电子邮件?


2
你可以通过AJAX调用在你的服务器上运行的脚本来完成这个任务...但这并不是真正的“纯JavaScript” :-) - Cameron
1
营销公司能否使用Javascript发送垃圾邮件? - Harmen
可能是使用JavaScript发送电子邮件的重复问题。 - Vivek Kumar
6个回答

6

编辑:[警告!] 请注意:

这是一个连接到外部服务器的第三方库,请注意您发送的信息。


在JS上,您可以使用名为smtpjs的库解决问题。

在头部添加以下库:

<script src="https://smtpjs.com/smtp.js"></script>

请使用不带安全性的选项:

Email.send("from@you.com",
"to@them.com",
"This is a subject",
"this is the body",
"smtp.yourisp.com",
"username",
"password");

请使用以下内容以确保安全:
Email.send("from@you.com",
"to@them.com",
"This is a subject",
"this is the body",
{token: "63cb3a19-2684-44fa-b76f-debf422d8b00"});

5
事实上,使用JavaScript构建SMTP客户端并不是很困难,这里有相关文章供参考。
但是,该SMTP客户端仍需要与SMTP服务器通信以传递电子邮件。如今对所有人开放的SMTP服务器非常罕见(因为它们很快就会成为垃圾邮件渠道,然后被封锁和/或关闭)。
然而,如果使用客户端的人可以提供SMTP服务器和用户凭据(就像使用其他通用电子邮件客户端一样),那么是的,你可以只使用JavaScript发送电子邮件。

1
这并不是JavaScript中真正的SMTP客户端,而是通过PHP后端发送邮件的邮件用户代理。OP要求“只使用JavaScript”。 - Axel Beckert
就像@AxelBeckert所说的那样。这是后续文章的链接,展示了PHP代码调用PHP mail()函数发送电子邮件,该函数由客户端AJAX触发:https://web.archive.org/web/20130718210439/http://www.devarticles.com/c/a/JavaScript/Sending-Email-with-an-SMTP-Client-Built-with-Prototype-and-PHP/ - Prid

4

可以。使用Web服务。您可以通过AJAX调用服务。 EmailYak是这样的一项服务(目前处于私人测试阶段)。

编辑:这仍然是一种服务器端解决方案,因为实际的电子邮件是从服务器发送的。您只是通过AJAX与服务器通信并告诉它发送电子邮件。


4

请注意,smtpjs使用位于http://smtpjs的服务。它并不是真正的JavaScript SMTP客户端。这个“工具”意味着您正在将电子邮件凭据上传到服务器smtpjs.com。请极度谨慎使用


1

您可以重定向到一个mailto:someone@example.com?cc=someone_else@example.com&subject=This%20is%20the%20subject&body=This%20is%20the%20body地址,这会告诉浏览器启动邮件客户端并准备好发送邮件 - 用户只需点击“提交”即可。

代码:

document.location="mailto:someone@example.com?cc=someone_else@example.com&"+
    "subject=This%20is%20the%20subject&body=This%20is%20the%20body";

实际上,你可以在JavaScript中做类似的事情,而无需用户点击提交按钮。但是这需要假设本地计算机上存在诸如Outlook之类的电子邮件客户端。 - DOK
@DOK:确定吗?我在你提供的页面上没有看到这个。而且这将是一个巨大的安全漏洞。 - thejh
@thejh 我认为那段代码很容易在那里找到。它是问题的第一个答案。搜索“onclick”或“mailto:”。 - DOK
@DOK:用户仍然需要在邮件客户端中单击“提交”。 - thejh
@thejh 所以基本上你正在提出反对你所提出的答案的论点。 - DOK
@DOK:为什么不呢?这并没有完全使其无法使用,但我想指出这一点。 - thejh

1

如果您想从SMTP进程“静默”地发送消息,则需要在服务器上或使用托管服务进行操作。

如果您愿意使用用户的本机电子邮件程序,您可以使用类似于此问题中描述的方法的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接