Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z $mail a dokładnie z tematem wiadomości
Forum PHP.pl > Forum > Przedszkole
sannjas
Witam!

Mam - pewnie mały - problem z jedną rzeczą.

W naszym "systemie firmowym" mamy takie coś do wysyłania maila:

  1. $mail['no-fabric']['message'] = "<p>Zamowienie nr ##order_no## - <strong>brak tkaniny</strong></p>";
  2. $mail['no-fabric']['subject'] = "Brak tkaniny";


I wszystko jest ok. Jeżeli osoba uprawniona w swoim formularzu wybierze w formularzu funkcję i zaznaczy czekboks, dostaniemy maila z informacją, że jest brak.
Chcieliśmy to zmienić to aby od razu w temacie był widoczny numer zamówienia, ale jeżeli dopiszę to tak:

  1. $mail['no-fabric']['message'] = "<p>Zamówienie nr ##order_no## - <strong>brak tkaniny</strong></p>";
  2. $mail['no-fabric']['subject'] = "Brak tkaniny zamowienie nr ##order_no##";


To nie działa poprawne i mail przychodzi z tematem dosłownie "Brak tkaniny zamowienie nr ##order_no##".
Nie podmienia ##order_no## na numer zamówienia tak jak to poprawnie robi w treści e-maila.

Jak to zmienić?

Pozdrawiam i dziekuję.
Maciek
nospor
Widac funkcja, ktora przetwarza te tablice, zamienia tylko slowa w tresci a temat pozostawia bez zmian. To dosc logiczne...
Jak chcesz to zmienic, to wejdz w kod tej funkcji i dopisz do niej to co trzeba
sannjas
@nospor dziękuję za odpowiedź, jestem jednak dopiero początkującym przedszkolakiem w php i nawet nie wiem co i gdzie mam dopisać. Nie chciałbym popsuć systemu, który mamy w firmie - kopia zapasowa jest oczywiście. Możesz mnie bardziej naprowadzić?

Mamy coś takiego:
  1. //Funkcja wysyłająca e-mail przy pomocy klasy PHPMailer
  2. function sendmail($do,$do_name,$temat,$wiadomosc)
  3. {
  4. global $config;
  5. require_once("classes/phpmailer/class.phpmailer.php");
  6.  
  7. $mail = new PHPMailer();
  8.  
  9. $mail->IsSMTP(); // set mailer to use SMTP
  10. $mail->Host = $config['smtp_server']; // specify main and backup server
  11. $mail->SMTPAuth = true; // turn on SMTP authentication
  12. $mail->Username = $config['smtp_username']; // SMTP username
  13. $mail->Password = $config['smtp_password']; // SMTP password
  14.  
  15. $mail->From = $config['smtp_username'];
  16. $mail->FromName = $_SERVER['HTTP_HOST'];
  17. $mail->AddAddress($do,$do_name);
  18. $mail->AddReplyTo($config['smtp_username']);
  19.  
  20. $mail->WordWrap = 70; // set word wrap to 50 characters
  21. $mail->IsHTML(true); // set email format to HTML
  22. $mail->Port = 587;
  23. $mail->CharSet = 'utf-8';
  24. $mail->Subject = $temat;
  25.  
  26. require_once("classes/class.html2text.php");
  27. $h2t = new html2text($wiadomosc);
  28. $wiadomosc_alt = $h2t->get_text();
  29.  
  30. $mail->Body = $wiadomosc;
  31. $mail->AltBody = $wiadomosc_alt;
  32.  
  33. if($mail->Send()) $wyslano = true;
  34. else $wyslano = false;
  35. $mail->ClearAllRecipients();
  36. $mail->ClearReplyTos();
  37. $mail->ClearAttachments();
  38. $mail->ClearCustomHeaders();
  39. //echo $mail->ErrorInfo;
  40. return $wyslano;
  41. }
nospor
Kod co pokazales nigdzie nie zamienia tych tekstow.

Zas ten kawalek:
require_once("classes/class.html2text.php");
$h2t = new html2text($wiadomosc);
$wiadomosc_alt = $h2t->get_text();

wnioskuje ze zammienia jedynie html na zwykly tekst bez html

Tak wiec zapewne zamiana jest gdzies przed wywolaniem funkcji sendmail()
sannjas
  1. function filter_data($data,$filter = array('strip_tags','addslashes'))
  2. {
  3. if (count($filter) > 0)
  4. {
  5. if (!is_array($data)) foreach($filter AS $filt)
  6. {
  7. if(function_exists($filt)) $data = call_user_func($filt,$data);
  8. else $data = $data;
  9. }
  10. else foreach($filter AS $filt)
  11. {
  12. if(function_exists($filt)) $data = array_map($filt,$data);
  13. else $data = $data;
  14. }
  15. return $data;
  16. }
  17. else return $data;


to mam przed tym co wyżej
nospor
To tez nie to
sannjas
To może z innej strony - czego szukać? Jakichś znaczników czy stałych specjalnych?

Może w phpmailerze coś jest od tego?

Czyli ogólnie rzecz biorąc nie wstawię w temat nic? Nawet jakby go wcześniej przetworzył jakoś w stałą z wykorzystaniem zmiennej?

nospor
Musisz przesledzic sciezke do wywolania sendmail(). Gdzies po drodze tej sciezki jest zamiana ktorej szukasz.
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.