JavaScript使用window.open发送mailto邮件

47

我目前有一个表单,其中设置了5个单选按钮。根据您选择的选项,我有一个switch语句确定电子邮件将发送到哪里。

在我的switch中,我有这段代码。

window.open("mailto:"+emailTo+'?cc='+emailCC+'&subject='+emailSub+'&body='+emailBody);

当我的电子邮件客户端打开且包含所有内容时,一切都正常工作,但同时它也会在浏览器中打开一个空白页面。

是否有另一种方法来实现这个目的或者防止打开空白窗口但仍然像点击href:mailto一样工作?


我认为这是浏览器的设置,因此您无法控制它的工作方式。 - Liam
你可以使用 window.location.href = "mailto:mail@example.org";,但只有在浏览器设置中未设置 Gmail 打开时才有效。 - antyrat
你可以关闭那个窗口,对吧? - Ale
3
可能是重复的问题:如何防止mailto事件在浏览器中打开新标签页的问题。 - Jonathan Lonowski
4个回答

57

改为:

window.open("mailto:"+emailTo+'?cc='+emailCC+'&subject='+emailSub+'&body='+emailBody);

您可以尝试以下方法:

location.href = "mailto:"+emailTo+'?cc='+emailCC+'&subject='+emailSub+'&body='+emailBody;

34

window.open 函数中的第二个参数是目标窗口。

window.open('mailto:'+emailTo+'?cc='+emailCC+'&subject='+emailSub+'&body='+emailBody, '_self'); 可以解决问题。


5

在Chrome中,location.href似乎无法正常工作。 我是这样做的:

x=window.open("mailstring");
x.close();

对我来说完美地发挥作用。


2
如果您将mailstring作为变量或占位符,请不要将其放入单引号中。 - ESP32
1
这不会一直有效。在我的电脑上,有时会在mailto完成之前关闭窗口。 - cdmckay
如果Outlook是邮件客户端,对我来说无法工作。 - Ya.

-5
在你的 "window.open" 语句之后,尝试运行一个 "if 语句" 来检查是否打开了一个新窗口,以便关闭它。
if (win && win.open && !win.closed) 
    {   
    win.close();
    }

这将非常快速,因此用户可能会注意到在电子邮件应用程序打开之前打开并关闭了一个窗口。


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