Используя 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]
Вотэлектронная почта: