绕过mailto / href / url字符限制

时间:2010-11-01 08:05:16

标签: html url anchor mailto

我在锚标记中有一个mailto链接

<a href="mailto:?subject=Subject&body=Body">Email This</a>

问题是Body参数是一篇很大的文章,网址上似乎有一个字符限制。

有没有办法绕过极限?

4 个答案:

答案 0 :(得分:10)

  

有没有办法绕过极限?

很难。

甚至可能存在不同浏览器或电子邮件客户端到电子邮件客户端的限制。

我宁愿使用HTML表单和服务器端脚本来发送消息。

答案 1 :(得分:6)

是的,网址的长度有限制。

限制因浏览器而异,因此您应将URL保持在2000个以下,以确保安全。

Internet Explorer似乎是具有最短限制的浏览器。根据{{​​3}},它是2083个字符。

答案 2 :(得分:0)

是的,Mailto标签存在问题,因浏览器和浏览器以及电子邮件客户端而异 邮件客户端。如果出现此问题,请尝试使用服务器端脚本来解决此问题。 Mailto有时表现得非常不正常

答案 3 :(得分:-1)

我知道这个问题已经过时了,但我遇到了类似的问题,因为我需要将电子邮件发送给许多收件人。

我偶然发现了solution,但我不明白为什么会这样,我还是留在这里

function sendEmails(emails) {
  var timeout = 2000;
  var mailtoPrefix = 'mailto:?bcc=';
  var maxUrlCharacters = 1900;
  var separator = ';';
  var currentIndex = 0;
  var nextIndex = 0;

  if (emails.length < maxUrlCharacters) {
    window.location = mailtoPrefix + emails;
    return;
  }

  do {
    currentIndex = nextIndex;
    nextIndex = emails.indexOf(separator, currentIndex + 1);
  } while (nextIndex != -1 && nextIndex < maxUrlCharacters)

  if (currentIndex == -1) {
    window.location = mailtoPrefix + emails;
  } else {
    window.location = mailtoPrefix + emails.slice(0, currentIndex);
    setTimeout(function () {
      sendEmails(emails.slice(currentIndex + 1));
    }, timeout);
  }
}

用法:

var emails = 'a@a.com;b@b.com;c@c.com';
sendEmails(emails);