Chromebook上的mailto链接无法复制电子邮件正文

10

我正在生成一个包含电子邮件正文的mailto:链接。 我使用JavaScript打开该链接,以启动操作系统的mailto:客户端。在Chromebook上,该链接会打开Gmail并显示电子邮件地址,但不包括电子邮件正文。这是该链接:

var MailToLink = 'mailto:test@test.com?subject=Test%20Email%20Subject&body=Great,%20the%20mailto%20protocol%20works%20and%20you%27re%20good%20to%20go.%20Good%20luck.'

这是我用来打开链接的代码行:window.open(MailToLink, '_blank');

在Windows 10操作系统上,通过Thunderbird和Android版Gmail使用起来非常好。

在Chromebook上需要改变什么吗?


2
使用除了_self以外的任何东西都会在我的beta频道chromebook上创建fork bomb,但是使用_self后,主体内容会出现(稍有延迟)。我会尝试使用_self来确保它不会与弹出/安全功能产生交互。但是你也可以尝试从chrome://settings/handlers中删除gmail,并记录未处理的URL,然后让gmail重新注册,以查看哪个阶段正在丢失主体内容。 - lossleader
谢谢。我会尝试并让您知道它的工作原理。 - frenchie
@frenchie,关于lossleader的解决方案有什么更新吗? - Dakota Maker
我非常确定(某些)Chromebook 的处理能力不是很强。因此,可能无法实现,即使可以实现,我也不知道如何解决这个问题。 - UserX
请告诉我们为什么需要 JavaScript 而不是 <a>,用户是否可以在创建电子邮件之前单击链接/按钮? - Julian
显示剩余3条评论
4个回答

3

使用 location.href 设置页面跳转,而不是创建弹出窗口,如何看待这种做法?

location.href = "mailto:test@test.com?subject=Test%20Email%20Subject&body=Great,%20the%20mailto%20protocol%20works%20and%20you%27re%20good%20to%20go.%20Good%20luck."

寻求可信和/或官方来源的答案。
好消息是,mailto链接中的主题和正文在RFC 2368 - The mailto URL scheme中有描述。
解析mailto URL为邮件的客户端应能够正确地使用“主题”和“正文”头创建符合RFC 822的邮件。请注意,“不安全的头”也有一段文字,因此我认为其内容也很重要。
不安全的头部分:解释一个mailto URL的用户代理应该选择不创建消息,如果任何头部被认为是危险的;它还可以选择只创建URL中给定的头部的子集。只有主题,关键字和正文标题被认为既安全又有用。

2

试试这个

var MailToLink = 'mailto:test@test.com?subject=Test%20Email%20Subject&body=Great,%20the%20mailto%20protocol%20works%20and%20you%27re%20good%20to%20go.%20Good%20luck.'
var sendEmail = document.getElementById('sendEmail');

  sendEmail.addEventListener('click', function (e){
    window.location.href = MailToLink;
  });
<input type="button" id="sendEmail" value="submit">


1

另一个稳定的选择是使用<a>标签,并使用JavaScript编辑href属性。

例如:

var mailto = "mailto:test@test.com?subject=Test%20Email%20Subject&body=Great,%20the%20mailto%20protocol%20works%20and%20you%27re%20good%20to%20go.%20Good%20luck."

document.getElementById("myLink").setAttribute("href", mailto)
<html>
<body>
    <a id="myLink">Create email now!</a>
</body>
</html>

不确定这是否符合您的要求。


0

最简单的方法可能是使用经典的邮件链接,使用锚标签,但是我猜测您正在使用JavaScript出于特定的原因,因此也许如果您将一个简单的名称作为第二个参数而不是'_blank'或'_self'值之一进行指定。例如,您可以称其为'emailWindow'或类似的名称。

这是启发使用窗口名称的MDN链接:https://developer.mozilla.org/en-US/docs/Web/API/Window/open#Parameters

下面是一些代码来测试它。

*注意:出于安全原因,我相信StackOverflow已禁用打开新窗口的功能,因此您将不得不在本地测试按钮代码,抱歉。

var MailToLink = 'mailto:test@test.com?subject=Test%20Email%20Subject&body=Great,%20the%20mailto%20protocol%20works%20and%20you%27re%20good%20to%20go.%20Good%20luck.'

const sendEmailButton = document.getElementById('sendEmailButton');
sendEmailButton.onclick = () => {
    window.open(MailToLink, 'emailWindow');
    if (window.open && !window.closed) {window.close();}
};
<h1>Anchor Tag and Button Versions of Mail To</h1>

<h2>The anchor tag version</h2>
<a href="mailto:test@test.com?subject=Test%20Email%20Subject&body=Great,%20the%20mailto%20protocol%20works%20and%20you%27re%20good%20to%20go.%20Good%20luck.">test mail to using href</a>


<h2>the button version</h2>
<button type="button" id="sendEmailButton">test mail to using button</button>


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