Зашифрованная почтовая ссылка TYPO3 (javascript:linkTo_UnCryptMailto) не работает с темой и телом

#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
 

https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/Setup/Config/Index.html#spamprotectemailaddresses

Жидкость:

 <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 , я могу использовать пробелы в email параметре без необходимости их замены.