Замените ссылки сообщений электронной почты ссылками HTML, а символы возврата и перехода на новую строку - тегами HTML <br>. - PullRequest
0 голосов
/ 26 февраля 2019

Используя vBulletin, я хотел отправлять электронные письма в виде HTML вместо простого текста.Я использовал nl2br, но это нарушило структуру текста письма, удалив теги \ r \ n, которые хранятся в фразе письма в базе данных.

Я искал в Интернете функцию preg_replace, чтобы заменить возвраты и переводы строк тегами
.Это работало нормально.

Следующим вопросом, который у меня был, были ссылки в письме.Используя nl2br, это удалило ссылку и оставило только текст.Я снова искал функцию для замены ссылок с HTML-тегами и нашел одну.Это работало нормально.

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

Это мой код.

$linkReplace = preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', '<a href="$1" target="_blank">$1</a>', $message); 
$returnReplace = preg_replace("/\r\n|\r|\n/",'<br/>',$linkReplace); 
$message = $returnReplace; 
$headers = str_replace('Content-Type: text/plain', 'Content-Type: text/html', $headers);  

Это $ сообщение, взятое из фраз для электронного письма:

НЕ ОТВЕТИТЬ НА ЭТУ ПОЧТУ!


Уважаемый $ touserinfo [имя пользователя],

Вы получили новое личное сообщение на $ vboptions [bbtitle] от $ fromusername, озаглавленное "$ plaintext_title".

Чтобы прочитать оригинальную версию, ответить или удалить это сообщение, вы должны авторизоваться здесь: $ vboptions [bburl] /private.php

Это сообщение было отправлено:


$ plaintext_message


Снова, пожалуйста, не отвечайте на это письмо.Вы должны перейти на следующую страницу, чтобы ответить на это личное сообщение: $ vboptions [bburl] /private.php

Всего наилучшего, $ vboptions [bbtitle]

Вотэлектронная почта:

email sent

...