Область данных, переданная системному вызову, слишком мала "

Существует ли определенный размер строки для электронной почты Outlook. У меня есть следующий код, который дает мне ошибку

Область данных, переданная системному вызову, слишком мала

Однако это только кажется, когда мое тело сообщения больше обычного

document.location.href = "mailto:" + emailAddress + "?subject=my msgs Relief&body=" + escape(message);

Если я удаляю код, он не покажет это сообщение. Таким образом, это швы, связанные с количеством символов в теле письма. Пожалуйста, предложите.

Ответ 1

Недавно я столкнулся с этой точной проблемой. Проблема заключается в том, что разные браузеры (и разные почтовые клиенты) имеют ограничения на количество данных, которые могут быть переданы между ними, используя почтовые ссылки.

Например, максимальная длина URL-адреса в Internet Explorer составляет 2083 символа (MS KB Link). Если общая длина вашей ссылки, включая тему, адрес и тело, превышает это, вы получите именно эту ошибку.

Чтобы исправить это (как мы должны поддерживать IE), я использовал этот kludge после создания моей ссылки:

var mailto_link = 'mailto:'+addresses+'?subject='+subject+'&body='+body_message;
win = window.open(mailto_link.substr(0,2000),'emailWindow');

Это не идеально, но в редких случаях пользователь пытается генерировать огромное электронное письмо с уведомлением, сначала он вежливо предупреждается, напомняется во время и уведомляется после события.

Ответ 2

Вероятно, это происходит из-за того, что пробелы не принимаются некоторыми почтовыми клиентами как часть href, поэтому вам нужно URI закодировать их (escape), чтобы они стали %20.

Попробуйте следующее:

document.location.href = "mailto:" + emailAddress + "?subject=my%20msgs%20Relief&body=" + escape(message);