Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SwiftMailer - znaczniki html
Forum PHP.pl > Forum > PHP
brutal1985
Witam.
Chciałbym się zapytać, czy istnieje (jeśli tak, to w jaki sposób?) możliwość odczytania znaczników HTML przesyłanych w treści wiadomości email za pomocą biblioteki SwiftMailer.
Mam oto taki kod, obsługujący wysyłanie wiadomości email:
  1. $autor = $_POST['autor'];
  2. $email_autora = $_POST['email'];
  3. $odbiorca = $_POST['odbiorca'];
  4. $tytul= addslashes($_POST['tytul']);
  5. $tresc = addslashes($_POST['tresc']);
  6. include "swift/lib/swift_required.php";
  7. $mailMessage = Swift_Message::newInstance();
  8. $mailMessage->setSubject($tytul);
  9. $mailMessage->setFrom(array($email_autora => $autor));
  10. $mailMessage->setTo(array($odbiorca));
  11. $mailMessage->setBody($tresc,'text/html','iso-8859-2');
  12. $transport = Swift_MailTransport::newInstance();
  13. $mailer = Swift_Mailer::newInstance($transport);
  14. $mailResult = $mailer->send($mailMessage, $aMailFailures);
  15. if (!$mailResult)
  16. {
  17. echo "Wystąpił błąd: ";
  18. print_r($aMailFailures);
  19. }

Chodzi mi o to, aby w treści wysłanej wiadomości email zamiast znaczników HTML typu <br>, <b>, itd. znajdowały się zinterpretowane wartości, np. przejście do nowej linii, czy też pogrubienie tekstu. Ewentualnie zamiast znaczników HTML mógłby być BBCode.
wujek2009
Ja używam;
  1. $swift ->addPart($message, 'text/html');


gdzie $message to właśnie widok, w którym mam kod HTMLa i normalnie odczytuje go w skrzynkach pocztowych.
Zmień po prostu sposób wysyłki.
brutal1985
A w jaki sposób mam go zmienić? Bo przyznam się szczerze po raz pierwszy mam do czynienia ze SwiftMailer.

Znalazłem coś w tym stylu, ale skrypt ten nie chce mi działać.
  1. $Msg->setBody($Content, "text/html");
  2. $Msg->addPart(StripHtml ($Content), "text/plain");
  3.  
  4. //------ StripHtml(): -------------------
  5. function StripHtml ($Text)
  6. {
  7. $T = str_replace ("&nbsp;", " ", $Text); // "&nbsp;" to spatie
  8. $T = str_replace ("/\r\n/", "\n", $T); // "\r\n" to "\n"
  9. $T = preg_replace ("/[\x20\x9]*<td[^>]*>[\n]?/", "\t", $T); // "<td>" to "\t"
  10. $T = preg_replace ("/[\x20\x9]*<\/tr[^>]*>[\n]?/", "\n", $T); // "</tr>\n" to "\n"
  11. $T = preg_replace ("/<\/t[drh][^>]*>[\n]?/", "", $T); // remove "</td>", "</tr>", "</th>"
  12. $T = preg_replace ("/<\/title[^>]*>[\n]?/", "\n", $T); // "</title>" to "\n"
  13. $T = preg_replace ("/<\/table[^>]*>[\n]?/", "\n", $T); // "</table>" to "\n"
  14. $T = preg_replace ("/[\x20\x9]*<table[^>]*>[\n]?/", "", $T); // remove "<table>"
  15. $T = preg_replace ("/[\x20\x9]*<tbody[^>]*>[\n]?/", "", $T); // remove "<tbody>"
  16. $T = preg_replace ("/[\x20\x9]*<thead[^>]*>[\n]?/", "", $T); // remove "<thead>"
  17. $T = preg_replace ("/[\x20\x9]*<tfoot[^>]*>[\n]?/", "", $T); // remove "<tfoot>"
  18. $T = preg_replace ("/<br[^>]*>[\n]?/", "\n", $T); // "<br>\n" to "\n"
  19. $T = preg_replace ("/<\/p[^>]*>[\n]?/", "\n", $T); // "</p>\n" to "\n"
  20. $T = preg_replace ("/<\/h\d[^>]*>[\n]?/", "\n", $T); // "</h1>" etc. to "\n"
  21. $T = preg_replace ("/<\/?b>/", "*", $T); // "<b>" and "</b>" to "*"
  22. $T = preg_replace ("/<\/?i>/", "/", $T); // "<i>" and "</i>" to "/"
  23. $T = preg_replace ("/<[^>]*>[\n]?/", "", $T); // remove all other HTML-tags
  24. return ($T);
  25. } // "StripHtml()"

ma ktoś jakiś pomysł, jak to rozwiązać?
wujek2009
Po prostu w Twoim kodzie (pierwszy post) zamiast
  1. $mailMessage->setBody($tresc,'text/html','iso-8859-2');


daj
  1. $mailMessage ->addPart($tresc, 'text/html');


Pozostałej części Twojego kodu nie sprawdzałem, ale w manualu SwiftMailera masz elegancko opisane jak wysyłać e-maile.
Stąd w razie problemów po prostu zapraszam do dokumentacji.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.