Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomoc w obsłudze mail w PHP
Forum PHP.pl > Forum > PHP > Object-oriented programming
SpiJay
Hej,
witajcie, napisałem skrypt:
  1. if($_POST['wyslij'] != ''){
  2. if($_POST['zgoda'] == '1'){
  3. if($_POST['dzialanie'] == 'kot'){
  4. if($_POST['imie'] != '' && $_POST['nazwisko'] != '' && $_POST['nazwisko'] != '' && $_POST['adres'] != '' && $_POST['plec'] != '' && $_POST['zajecie'] != 'brak'){
  5.  
  6. if ($_FILES['obrazek']['size'] <= $MAXIMUM_FILESIZE) {
  7. if (preg_match($rEFileTypes, strrchr($safe_filename, '.'))) {
  8. if(is_uploaded_file($plik_tmp)) {
  9. move_uploaded_file($plik_tmp, $dir_base.$safe_filename_hash.$rozszerzenie);
  10.  
  11. if ($_POST['mail'] != '') {
  12.  
  13. $headers = "From: $_POST[imie] $_POST[nazwisko] <dolaczdonas@dawca.pl>" . "\r\n";
  14. $headers .= "MIME-Version: 1.0" . "\r\n";
  15. $headers .= "Content-Type: text/html; charset=iso-8859-2" . "\r\n";
  16.  
  17. $adresaci = 'marketing@dawca.pl' . ', ';
  18. $adresaci .= 'p.szram@interia.eu' . ', ';
  19. $adresaci .= $_POST['mail'];
  20.  
  21. $message = '<!DOCTYPE html><html><head><style>body {padding: 0;margin: 0;font-family: "Calibri", sans-serif, Arial, Verdana;}#header {width: 100%;height: 109px;background: #4B4B4B;}a {color: #6dbe2c; text-decoration: none;}a:hover {color: #4e7033; }#logo {float: left;width: 113px;height: 47px;margin: 27px 0px 0px -2px; border: none;}#blog-info {float: left;color: #ffffff;margin: 23px 0px 0px 20px;}#blog-info #blog-name {font-weight: bold;font-style: normal;line-height: normal;margin: 0px; font-size: 26px;text-shadow: #000 0 2px 2px;filter:progid:DXImageTransform.Microsoft.Shadow(Color=#2B63BE, Direction=135, Strength=2);}#blog-info #blog-name a {color: #ffffff;text-decoration: none;}#blog-description {font-weight: normal;font-style: normal;color: #ffffff;font-size: 14px;margin: -8px 0px 0px 1px;text-shadow: #000 0 1px 0;filter:progid:DXImageTransform.Microsoft.Shadow(Color=#2B63BE, Direction=135, Strength=2);}.question {font-weight: bold;padding: 2px;font-size: 12px;color: #828282;width: 30%;}.answer {padding: 2px;font-size: 12px;width: 70%;}</style><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"/></head><body><div id="header"><div style="width: 80%; margin: 0 auto; position: relative;"><div id="logo"><a title="krwiodawstwo" href="https://www.dolaczdonas.dawca.pl/"><img src="https://www.dolaczdonas.dawca.pl/logo.png" alt="przeszczep narządów"></a></div><div id="blog-info"><span id="blog-name"><a href="https://www.dolaczdonas.dawca.pl/"><span>Dawca.pl</span></a></span><p id="blog-description"><span>Bądź świadomym dawcą narządów</span></p></div><div style="float: right; font-size: 26px; text-align: right; color: #707070; margin-top: 15px;">Zgłoszenie wolontariusza<br/><span style="color: #aced2e;">'.$_POST['imie'].' '.$_POST['nazwisko'].'</span></div></div></div><div style="width:80%;margin: 0 auto;font-size:22px;font-weight:bold;text-align:center;color: #5b5b5b;">Szczegóły o zgłaszającym</div><hr style="width:80%;border:1px dashed #5b5b5b;height:1px;"/><table width="70%" style="margin: 0 auto;"><tr><td width="40%" valign="top"><table width="100%"><tr><td valign="top" align="right" class="question">Imię:</td><td valign="top" class="answer">'.$_POST['imie'].'</td></tr><tr><td valign="top" align="right" class="question">Nazwisko:</td><td valign="top" class="answer">'.$_POST['nazwisko'].'</td></tr><tr><td valign="top" align="right" class="question">Wiek:</td><td valign="top" class="answer">'.$_POST['wiek'].'</td></tr><tr><td valign="top" align="right" class="question">Fotografia:</td><td valign="top" class="answer"><a href="https://www.dolaczdonas.dawca.pl/'.$dir_base.$safe_filename_hash.$rozszerzenie.'" target="_blank">Zobacz</a></td></tr><tr><td valign="top" align="right" class="question">Płeć:</td><td valign="top" class="answer">'.$_POST['plec'].'</td></tr><tr><td valign="top" align="right" class="question">Adres e-mail:</td><td valign="top" class="answer"><a href="mailto:'.$_POST['mail'].'">'.$_POST['mail'].'</a></td></tr><tr><td valign="top" align="right" class="question">Telefon:</td><td valign="top" class="answer">'.$_POST['telefon'].'</td></tr><tr><td valign="top" align="right" class="question">Miejsce zam.:</td><td valign="top" class="answer">'.$_POST['adres'].'</td></tr><tr><td valign="top" align="right" class="question">Zajęcie:</td><td valign="top" class="answer">'.$_POST['zajecie'];
  22. if($_POST['student'] != $uczelnia) {
  23. $message .= '<hr style="border:1px dashed #5b5b5b;height:1px;"/>';
  24. $message .= '<span style="color: #9d7124;">Jeżeli studia, to gdzie ?</span>';
  25. $message .= '<br/>'.$_POST['student'].'<br/>';
  26. }
  27. if($_POST['inne'] != $czym) {
  28. $message .= '<hr style="border:1px dashed #5b5b5b;height:1px;"/>';
  29. $message .= '<span style="color: #1c80a5;">Inne zajęcie:</span>';
  30. $message .= '<br/>';
  31. $message .= '<span style="font-style:italic;">'.$_POST['inne'].'</span>';
  32. }
  33. $message .= '</td></tr></table></td><td width="60%" valign="top"><div class="question" style="width:100% !important;">Doświadczenie w organizacjach pozarządowych / strukturach szkolnych / uczelnianych itp.:</div><div class="answer" style="font-style:italic;width:100% !important;margin-bottom:20px;">'.$_POST['doswiadczenie'].'</div><div class="question" style="width:100% !important;">Twoje zainteresowania:</div><div class="answer" style="font-style:italic;width:100% !important;margin-bottom:20px;">'.$_POST['zainteresowania'].'</div><div class="question" style="width:100% !important;">Czym kierujesz się przystępując do zespołu Dawca.pl ?</div><div class="answer" style="font-style:italic;width:100% !important;margin-bottom:20px;">'.$_POST['kierunek'].'</div><div class="question" style="width:100% !important;">Opisz jak widzisz siebie za 5 lat:</div><div class="answer" style="font-style:italic;width:100% !important;margin-bottom:20px;">'.$_POST['opis'].'</div><div class="question" style="width:100% !important;">W jakim kierunku chciałbyś/chciałabyś aby poszła kampania społeczna Dawca.pl ?</div><div class="answer" style="font-style:italic;width:100% !important;margin-bottom:20px;">'.$_POST['kampania'].'</div></td></tr></table><hr style="width:80%;border:1px dashed #afafaf;height:1px;"/><div style="width:70%; margin: 0 auto; margin-bottom: 60px;"><span style="color: #afafaf; font-size: 11px;">System mailingowy specjalnie zaprojektowany dla potrzeb Polskiego Towarzystwa Programów Zdrowotnych, wydawcę kampanii społecznej "<b>Dawca.pl - Bądź świadomym dawcą narządów</b>", (z siedzibą w Gdańsku przy al. Zwycięstwa 42a) przez Patryka Szram, <b>Flash-Media</b> (ul. Toruńska 18B/4380-747 Gdańsk). Wiadomość została <br/>wygenerowana automatycznie, prosimy nie odpowiadać na ten adres e-mail.</span></div></body></html>';
  34.  
  35. mail($adresaci, "Zgłoszenie od wolontariusza $_POST[imie] $_POST[nazwisko]", "$message", "$headers")
  36. or die('Nie udało się wysłać wiadomosci, skontaktuj się z administratorem.');
  37.  
  38. $poszlo = "<b>Zgłoszenie zostało wysłane poprawnie !</b><br/><br/>W przypadku wyboru Twojej kandydatury będziemy się kontaktować mailowo lub (jeżeli wprowadzono numer) telefonicznie. Kopia tego zgłoszenia powędrowała także na Twój adres e-mail <b>". $_POST['mail'] ."</b>";
  39. } else { $blad = "Nie podano adresu mailowego.<br/>Proszę zwracać uwagę na pola oznaczone <b>*</b>, ponieważ są to pola obowiązkowe."; }
  40.  
  41. }
  42. } else { $blad = "Nie załadowano obrazu. Wystąpił błąd przy próbie załadowania obrazu."; }
  43. }
  44.  
  45. } else { $blad = "Prosimy zwracać uwagę na pola oznaczone <b>*</b> (gwiazdką), ponieważ to pola obowiązkowe, które są niezbędne do wysłania zgłoszenia."; }
  46. } else { $blad = "Musisz podać poprawną odpowiedź na pytanie antyspamowe na końcu formularza. Używaj wyłącznie małych liter i nie wprowadzaj spacji."; }
  47. } else { $blad = "Musisz zaakceptować zgode na przetwarzanie danych przez Dawca.pl"; }
  48. }


Mail czasami dociera do odbiorców w sposób w jaki sformatowałem maila a czasami po prostu się rozkracza. Oto obraz: http://spijay.com/download/asd.png - tutaj na górze jest mail w formie w jaki zakładałem, natomiast na dole jest mail po rozkraczeniu.

Coś robię źle w PHP ?

Pozdrawiam,
Patryk

Odświeżam, problem jest nadal.
vokiel
Pierwsza rzecz, unikaj takich wielokrotnie zagłębionych if'ów. Debugowanie czegoś takiego to męka. Zamiast robić tak:
  1. if ( $warunek ){
  2. if ( $drugi_warunek ){
  3. if ( $kolejny_warunek ){
  4. // akcja
  5. } else {
  6. // kolejny error
  7. }
  8. } else {
  9. // drugi error
  10. }
  11. } else {
  12. //error
  13. }

Zrób
  1. if ( !$warunek ){
  2. // error
  3. }
  4. if ( !$drugi_warunek){
  5. // drugi error
  6. }
  7. if ( !$kolejny_warunek ){
  8. // kolejny error
  9. }
  10.  
  11. // akcja



Druga sprawa:
http://phpmailer.worxware.com/
http://swiftmailer.org/
SpiJay
Pierwszą radę z pewnością sobie wezmę do serca, faktycznie wygląda estetyczniej.

Natomiast w kwestii klasy, to już nie bardzo, ponieważ mam problem z przekazaniem informacji z PHP do szablonu HTML.
Aczkolwiek pomocny post, nie ukrywam.

vokiel
Moim zdaniem niepotrzebnie kończysz skrypt przez die();

  1. // warunki, tworzenie obiektu mailer'a
  2. if( $mailer->Send() ) {
  3. $message = 'OK';
  4. } else {
  5. $message = 'Error';
  6. }


W szablonie po prostu wyświetlasz komunikat. Oczywiście warto go ostylować, żeby było widać czy to jest komunikat pozytywny czy negatywny, ale to już kwestia dopieszczenia szczegółów.
sazian
zamiast funkcji mail proponuję użycie biblioteki swiftmailer
cudny
albo mailerphp czy choćby klas zendowskich, które spokojnie da się wyodrębnić z całości.
mail() niestety nie nadaje się do wysyłania maili, choćby ze względu na to, że każdy email to nowe otwarcie smtp, a to zajmuje sporo czasu.
Warto skorzystać z gotowych bibliotek korzystających z jednego otwarcia SMPT
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.