#encryption #typo3
#шифрование #typo3
Вопрос:
В TYPO3 mailto ссылки расшифровываются следующим фрагментом кода. Есть ли способ использовать это со ссылками mailto, которые содержат тему и основной текст?
например: email@example.org?subject=This это моя тема и тело = Это мой текст тела: больше текста … и т.д.
// decrypt helper function
function decryptCharcode(n,start,end,offset) {
n = n offset;
if (offset > 0 amp;amp; n > end) {
n = start (n - end - 1);
} else if (offset < 0 amp;amp; n < start) {
n = end - (start - n - 1);
}
return String.fromCharCode(n);
}
// decrypt string
function decryptString(enc,offset) {
var dec = "";
var len = enc.length;
for(var i=0; i < len; i ) {
var n = enc.charCodeAt(i);
if (n >= 0x2B amp;amp; n <= 0x3A) {
dec = decryptCharcode(n,0x2B,0x3A,offset); // 0-9 . , - / :
} else if (n >= 0x40 amp;amp; n <= 0x5A) {
dec = decryptCharcode(n,0x40,0x5A,offset); // A-Z @
} else if (n >= 0x61 amp;amp; n <= 0x7A) {
dec = decryptCharcode(n,0x61,0x7A,offset); // a-z
} else {
dec = enc.charAt(i);
}
}
return dec;
}
// decrypt spam-protected emails
function linkTo_UnCryptMailto(s) {
location.href = decryptString(s,-3);
}
Комментарии:
1. если у вас возникли проблемы с генерацией ссылки, проверьте генерацию ссылки без spamprotection. поскольку TYPO3 имеет особый формат данных для (любых) ссылок, вы можете легко столкнуться с проблемами с ним (независимо от spamprotection).
Ответ №1:
Хм, это работает для меня (TYPO3 v10).
Настройка TypoScript:
config.spamProtectEmailAddresses = -3
Жидкость:
<f:link.email email="my@email.tld?subject=123amp;body=Hello there!">link</f:link.email>
Это открывает мой почтовый клиент с темой и телом (Firefox 84, Thunderbird).
Комментарии:
1. Это работает с одним словом, но НЕ с примером выше: …. тема = Привет, я содержу пробелы — и другое: материал и тело = я содержу пробелы и разрывы строк
2. Вы должны urlencode вашей строки:
<f:link.email email="my@example.com.tld?subject=123amp;body={f:format.urlencode(value:'Hello i contain spaces - and other: stuff')}">link</f:link.email>
3. Я сделал это .. но это либо неправильно работает с encrypt js…
4. в TYPO3v10 это работает для меня даже с пробелами. также создает пробелы, но это не требуется. — Я отредактировал свой ответ
Ответ №2:
если он не запускается по умолчанию (возможно, это зависит от использования, откуда и в какое приложение, но я помню, что я его уже использовал).
Возможно, вам потребуется закодировать специальные символы для использования в URL-адресах.
Попробуйте использовать функцию PHP urlencode
.
Таким образом, вы можете заменить все пробелы на
или
.
Комментарии:
1. если ваше почтовое приложение не обрабатывает его правильно, вы ничего не можете сделать на стороне TYPO3. возможно, это связано с вашим браузером или вашей операционной системой. пожалуйста, определите проблему («это не работает» не является описанием, поэтому любой может определить ошибку и предложить решение)
2. Не имеет ничего общего с почтовым клиентом. Я думаю, что или неправильно зашифрованы js. интересно, есть ли у кого-нибудь такая же проблема и, возможно, решение 😉
3. если я создаю почтовую ссылку из fluid (
f:link.typolink parameter="mailto:noone@example.com?subject=mail from fluidamp;body=test test">mail</f:link.typolink>
), которая содержитили
целиком передается в целевую программу как есть (TYPO3 8.7). Если у меня есть пробелы в ссылке, аргументы разделяются (как и ожидалось) на link-target и link-title … (поэтому важно, как хранится и отображается ссылка). Если я использую
f:link.email
, я могу использовать пробелы в