2010-11-01 50 views
8

我有一个锚标记一个mailto链接四处逛逛的mailto/HREF/URL字符的限制

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

的问题是身体参数是一个巨大的文章,而且似乎是在一个字符的限制网址。

有没有办法避开这个限制?

回答

9

有没有办法绕过极限?

很难。

甚至很可能限制因浏览器或浏览器,或从电子邮件客户端到电子邮件客户端而有所不同。

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

+0

我不想通过电子邮件发送的消息。我希望它能像普通的mailto链接一样工作,用户可以通过邮件客户端发送邮件。 – HyderA 2010-11-01 08:21:30

+0

@gAMBOOKa我明白了。你可能会因此而失去...也许发送链接到信息呢? – 2010-11-01 08:24:35

+0

是的,我想一个片段和链接将不得不做。谢谢! – HyderA 2010-11-01 08:26:15

7

是的,URL的长度有一个限制。

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

Internet Explorer似乎是具有最短限制的浏览器。根据this article这是2083个字符。

+1

这也适用于href =“”这是我的href =“javascript:new Array(.....)”(很长的数组)的问题 – Spork 2013-07-02 15:28:02

0

是的,Mailto标签存在问题,它因浏览器和浏览器而不同,并且电子邮件客户端到 电子邮件客户端。在这个问题的情况下,尝试服务器端脚本来解决这个问题。 Mailto有时表现非常不正常

+1

答案看起来与已发布的其他人不同有用。你有更多的细节要添加吗? – VKen 2012-10-10 18:25:04

-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 = '[email protected];[email protected];[email protected]'; 
sendEmails(emails); 
+1

它通过拆分'mailto'中列出的电子邮件来工作,如果URL太大并且为每个切片的电子邮件集合手动调用'mailto'。这只适用于电子邮件太多的情况(相对于原始问题中提及的大型机构),它会在邮件客户端中创建多个电子邮件草稿。 – HyderA 2018-02-02 20:40:37

+0

不能扩展到邮件正文上吗? – Omid 2018-02-04 04:53:36

+0

不,它会用身体部位创建多个电子邮件。 – HyderA 2018-02-06 16:43:58