Limite de caracteres de correio / href / url
Pergunta
Eu tenho um link de e -mail em uma tag de âncora
<a href="mailto:?subject=Subject&body=Body">Email This</a>
A questão é que o parâmetro do corpo é um artigo enorme e parece haver um limite de caracteres no URL.
Existe uma maneira de contornar o limite?
Solução
Existe uma maneira de contornar o limite?
Muito dificilmente.
É até provável que as limitações variem do navegador para o navegador ou do cliente de e-mail para o e-mail cliente.
Prefiro usar um formulário HTML e um script do lado do servidor para enviar a mensagem.
Outras dicas
Sim, há um limite no comprimento do URL.
O limite varia do navegador ao navegador, portanto, você deve manter o URL abaixo de 2000 caracteres para estar seguro.
O Internet Explorer parece ser o navegador que está tendo o limite mais curto. De acordo com Este artigo São 2083 caracteres.
Sim, existem problemas com o e -mail a tag, ele varia do navegador para o navegador e o cliente de email para o cliente de email. No caso desses problemas, tente o script lateral do servidor para superar esse problema. Mailto às vezes se comporta muito anormal
Sei que essa pergunta é antiga, mas tive um problema semelhante, atingindo o limite, pois precisava enviar o email para muitos destinatários.
Eu me deparei com isso solução, mas não entendo por que funciona, eu deixo aqui de qualquer maneira
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);
}
}
uso:
var emails = 'a@a.com;b@b.com;c@c.com';
sendEmails(emails);