Обойти ограничение символов mailto / href / url
У меня есть ссылка mailto в теге привязки
<a href="mailto:?subject=Subject&body=Body">Email This</a>
проблема в том, что параметр Body является огромной статьей, и, похоже, существует ограничение символов на url.
есть ли способ обойти ограничение?
4 ответов
есть ли способ обойти ограничение?
очень вряд ли.
даже вероятно, что ограничения варьируются от браузера к браузеру или от почтового клиента к почтовому клиенту.
Я бы предпочел использовать HTML-форму и серверный скрипт для отправки сообщения.
Да, существует ограничение на длину URL-адреса.
ограничение варьируется от браузера к браузеру, поэтому вы должны сохранить URL ниже 2000 символов, чтобы быть в безопасности.
Internet Explorer кажется браузером, который имеет самый короткий предел. Согласно в этой статье это 2083 символа.
Да есть проблемы с тегом Mailto он варьируется от браузера к браузеру и почтовому клиенту к почтовый клиент. В случае возникновения этих проблем попробуйте сценарий на стороне сервера, чтобы преодолеть эту проблему . Mailto временами ведет себя очень ненормально
Я знаю, что этот вопрос старый, но у меня была аналогичная проблема, нажав предел, как мне нужно было отправить письмо во многих получателей.
я наткнулся на это решение, но я не понимаю, почему это работает, я все равно оставляю его здесь
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);