2010-11-01 33 views
8

que tienen un enlace de correo de una etiqueta de anclaMoverse por límite de caracteres mailto/href/url

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

La cuestión es que el parámetro corporal es un artículo enorme, y no parece haber un límite de caracteres en el url.

¿Hay alguna manera de superar el límite?

Respuesta

9

¿Hay alguna manera de superar el límite?

Muy poco.

Es incluso probable que las limitaciones varíen de un navegador a otro, o de un cliente de correo electrónico a un cliente de correo electrónico.

Preferiría utilizar un formulario HTML y una secuencia de comandos del lado del servidor para enviar el mensaje.

+0

No quiero a enviar el mensaje. Quiero que funcione como un enlace de correo regular, donde el usuario puede enviar un correo electrónico a través de su cliente de correo. – HyderA

+0

@gAMBOOKa Ya veo. Puede que no tenga suerte para eso ... ¿Tal vez enviar un enlace a la información en su lugar? –

+0

Sí, creo que un extracto y un enlace tendrán que hacer. ¡Gracias! – HyderA

7

Sí, hay un límite en la longitud de la URL.

El límite varía de un navegador a otro, por lo que debe mantener la URL por debajo de 2000 caracteres para estar seguro.

Internet Explorer parece ser el navegador que tiene el límite más bajo. De acuerdo con this article son 2083 caracteres.

+1

Esto también vale para href = "" que fue un problema para mi href = "javascript: new Array (.....)" (matriz muy larga) – Spork

0

Sí, hay problemas con la etiqueta de Mailto varía de un navegador a otro y envía un correo electrónico al cliente al cliente de correo electrónico . En el caso de este problema, intente con el script del lado del servidor para solucionar este problema. Mailto a veces se comporta muy anormal

+1

La respuesta parece similar a otras que ya están publicadas y no es muy útil. ¿Tiene más detalles para agregar? – VKen

-1

Sé que esta pregunta es antigua, pero tuve un problema similar, llegando al límite ya que necesitaba enviar el correo electrónico a muchos destinatarios.

me encontré con este solution, pero no entiendo por qué funciona, lo dejo aquí de todos modos

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

Funciona al dividir los correos electrónicos listados en 'mailto' si la url es demasiado grande y llama' mailto' manualmente para cada conjunto de correos en rebanadas. Esto solo funciona si hay demasiados correos electrónicos (a diferencia de un cuerpo grande en las preguntas originales) y crea múltiples borradores de correo electrónico en el cliente de correo. – HyderA

+0

¿no puede extenderse para que funcione en el cuerpo del correo? – Omid

+0

No, creará múltiples correos electrónicos con partes del cuerpo. – HyderA

Cuestiones relacionadas