Как переконвертировать разметку wiki в HTML при отправке письма из SIL

Всем привет!

У нас был такой вопрос в московской группе пользователей Atlassian. Как сделать так, чтобы разметка wiki была бы читаема в электронном сообщении, которое отправляется с помощью кода SIL.

Проблема

У нас есть тикет в Jira вот с таким описанием:

Мы можем отправить описание в электронном письме при помощи следующего код на SIL:

JEmailMessage email;
email.to = {"alex@gmail.com"};
email.subject = "Email to Santa";
email.message = description;
sendEmail(email);

Полученное письмо будет выглядеть вот так:

Как видно, у нас добавились какие-то символы, которые мешают нам читать текст письма. Эти символы – символы wiki разметки.

Что такое разметка wiki?

Начнем с того, что в Jira есть текстовые поля, которые поддерживают разметку wiki и которые не поддерживают. Для того, чтобы понять, поддерживает ли текстовое поле wiki разметку, достаточно обратить внимание на меню доступное для этого поля при редактировании. Вот так выглядит поле с меню разметки wiki.

А вот так без разметки:

Как видно меню разметки отсутствует.

Итак, у нас поле с разметкой wiki. Когда мы хотим сделать текст жирным, мы можем добавить специальные символы, которые скажут движку wiki, как этот текст отображать при выводе. Например, для того, чтобы сделать шрифт курсивным и жирным, мы должны добавить символы _*. Вот так: _*our text*_. Для того, чтобы отобразить таблицу, мы должны добавить символ | и так далее. При использовании меню к этому текстовому полю, символы добавляются автоматически.

Когда мы получаем письмо с этими символами, наш почтовый агент не знает, что с этими символами делать, так как в него не встроен движок wiki. Однако большинство почтовых агентов умеют читать HTML разметку, поэтому нам хорошо бы переконвертировать wiki разметку в HTML разметку, для того, чтобы наш почтовый агент отобразил бы текст красиво.

Решение

Хорошая новость в том, что в SIL уже встроена функция по конвертации wiki разметки в HTML разметку. Эта функция называется renderWiki.

Используем эту функцию в нашем коде:

JEmailMessage email;
email.to = {"alex@gmail.com"};
email.subject = "Email to Santa";
email.message = renderWiki(description);
sendEmail(email);

Теперь сообщение в почтовом агенте выглядит вот так:

Все читаемо!

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Leave a Reply

%d bloggers like this:

Spelling error report

The following text will be sent to our editors: