Umgebung mailto / href / url Zeichenbegrenzung
Frage
Ich habe einen mailto-Link in einem Anker-Tag
<a href="mailto:?subject=Subject&body=Body">Email This</a>
Das Problem ist, dass die Body-Parameter ein großer Artikel, und es erscheint die URL ein Zeichen begrenzt zu sein.
Gibt es eine Möglichkeit, die Grenze zu umgehen?
Lösung
Gibt es eine Möglichkeit, die Grenze zu umgehen?
Sehr kaum.
Es ist sogar wahrscheinlich, dass die Einschränkungen von Browser zu Browser unterschiedlich sein, oder von E-Mail-Client E-Mail-Client.
Ich würde lieber ein HTML-Formular und ein serverseitiges Skript verwenden, um die Nachricht zu senden.
Andere Tipps
Ja, es gibt eine Grenze für die Länge der URL.
Die Grenze variiert von Browser zu Browser, so dass Sie die URL unter 2000 Zeichen halten sollten sicher sein.
scheint Internet Explorer den Browser zu sein, der die kürzeste Grenze haben. Nach diesem Artikel die es 2083 Zeichen.
Ja, es gibt Probleme mit Mailto-Tag es von Browser zu Browser und E-Mail-Client variiert E-Mail-Client. Im Falle dieser Probleme versuchen serverseitige Skript, dieses Problem zu überwinden. Mailto manchmal benimmt sich sehr abnormal
Ich weiß, diese Frage ist alt, aber ich hatte ein ähnliches Problem, schlagen die Grenze, wie ich die E-Mail in viele Empfänger senden benötigt.
Ich kam in dieser Lösung , aber ich verstehe nicht, warum es funktioniert, ich lass es hier sowieso
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);
}
}
Nutzung:
var emails = 'a@a.com;b@b.com;c@c.com';
sendEmails(emails);