Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]mail z załącznikiem
Forum PHP.pl > Forum > Przedszkole
dave666
witam mam formularz wysyłania emaila z załączniekiem i zwykły email jak połaczyc te dwa skrypty mógłby mi kroś pomóc bo próbuje i próbuje i nic mi nie wychodzi temu zwracam się do was
  1. <?php
  2. //sprawdzenie czy załącznik pochodzi z formularza
  3. if ($_POST["wyslij"]==1)
  4. {
  5. srand((double)microtime()*1000000);
  6. $znacznik = md5(uniqid(rand()));
  7.  
  8. // dane o odbiorcy, nadawcy
  9. $odbiorca="email@email.pl";
  10. $tytul="tytuł wiadomosci";
  11. $nadawca = "Nadawca";
  12. $nadawca_mail="odkogo@email.pl";
  13.  
  14. // treść listu
  15. $tresclistu = "tutaj piszesz całą treść maila";
  16.  
  17. // definicja nagłówków
  18.  $naglowki  = "From: $nadawca <$nadawca_mail>\n";
  19.  $naglowki .= "MIME-Version: 1.0\n";
  20.  $naglowki .= "Content-Type: multipart/mixed;\n";
  21.  $naglowki .= "\tboundary=\"___$znacznik==\"";
  22.  
  23. // nagłówki listu
  24.  $tresc="--___$znacznik==\n";
  25.  $tresc .="Content-Type: text/plain; charset=\"iso-8859-2\"\n";
  26.  $tresc .="Content-Transfer-Encoding: 8bit\n";
  27.  $tresc .="\n$tresclistu\n";
  28.  
  29. // nagłówki i obsługa załącznika
  30.  $plik_nazwa_tmp = $_FILES["plik1"]["tmp_name"];
  31.  $plik_nazwa_oryginalna = $_FILES["plik1"]["name"];
  32.  $plik_wielkosc = $_FILES["plik1"]["size"];
  33.  
  34. if (is_uploaded_file($plik_nazwa_tmp))
  35.  {
  36.    $tresc .="--___$znacznik==\n";
  37.    $tresc .="Content-Type: image/gif\n";
  38.    $tresc .="Content-Disposition: attachment;\n";
  39.    $tresc .=" filename=\"$plik_nazwa_oryginalna\"\n";
  40.    $tresc .="Content-Transfer-Encoding: base64\n\n";
  41.    $f = fopen($plik_nazwa_tmp,"rb");
  42.    $dane = fread($f,filesize($plik_nazwa_tmp));
  43.    fclose($f);
  44.    $tresc .= chunk_split(base64_encode($dane));
  45.    $tresc .="--___$znacznik==--\n";
  46.  }
  47.  
  48. // wysłanie listu
  49.     if (mail($odbiorca,$tytul,$tresc,$naglowki))
  50.   {
  51.   print "E-mail z załącznikiem został wysłany poprawnie.";
  52.   }
  53.   else
  54.   {
  55.   print "E-mail NIE został wysłany poprawnie.
  56.   <br>Prosimy o <a href=\"java script:history.back();\">powrót</a> i wysłanie e-maila ponownie.";
  57.   }
  58. }
  59. ?>

zwykły email
  1. <?php
  2. if (empty($_POST['nick']) || empty($_POST['nazw']) || empty($_POST['ulica']) || empty($_POST['kod']) || empty($_POST['miasto']) || empty($_POST['telefon']) || empty($_POST['mail']) || empty($_POST['temat']) || empty($_POST['tresc']))
  3. {    
  4. echo "Nie uzupełniłeś wszystkich rubryk.";
  5. echo "<br>";
  6. echo "<a href='java script:history.go(-1)'>wróć</a>";
  7.  
  8. exit;  
  9. }
  10.  
  11. $wiadomosc =
  12. "Imie: ".$_POST['nick']."
  13. Nazwisko: ".$_POST['nazw']."
  14. Ulica: ".$_POST['ulica']."
  15. Kod pocztowy: ".$_POST['kod']."
  16. Miasto: ".$_POST['miasto']."
  17. Temat: ".$_POST['temat']."
  18. Telefon: ".$_POST['telefon']."
  19. E- mail: ".$_POST['mail']."
  20. Tresc: ".$_POST['tresc']."  ";
  21. $tematyka = "kontakt".$temat;
  22. mail ("email@email.pl", $tematyka, $wiadomosc );
  23. echo "Dziekujemy za wysłanie do nas maila,";
  24. ?>
Rafal Filipek
to
Kod
if (empty($_POST['nick']) || empty($_POST['nazw']) || empty($_POST['ulica']) || empty($_POST['kod']) || empty($_POST['miasto']) || empty($_POST['telefon']) || empty($_POST['mail']) || empty($_POST['temat']) || empty($_POST['tresc']))
{    
echo "Nie uzupełniłeś wszystkich rubryk.";
echo "<br>";
echo "<a href='javascript:history.go(-1)'>wróć</a>";

exit;  
}

wstaw po
Kod
if ($_POST["wyslij"]==1)
{


a to :
Kod
$wiadomosc =
"Imie: ".$_POST['nick']."
Nazwisko: ".$_POST['nazw']."
Ulica: ".$_POST['ulica']."
Kod pocztowy: ".$_POST['kod']."
Miasto: ".$_POST['miasto']."
Temat: ".$_POST['temat']."
Telefon: ".$_POST['telefon']."
E- mail: ".$_POST['mail']."
Tresc: ".$_POST['tresc']."  ";
$tematyka = "kontakt".$temat;
mail ("email@email.pl", $tematyka, $wiadomosc );
echo "Dziekujemy za wysłanie do nas maila,";

zamiast
Kod
$tresclistu = "tutaj piszesz całą treść maila";
dave666
zrobiłem tak i jest błąd
  1. <?php
  2. //sprawdzenie czy załącznik pochodzi z formularza
  3. if ($_POST["wyslij"]==1)
  4. {
  5.    if (empty($_POST['nick']) || empty($_POST['nazw']) || empty($_POST['ulica']) || empty($_POST['kod']) || empty($_POST['miasto']) || empty($_POST['telefon']) || empty($_POST['mail']) || empty($_POST['temat']) || empty($_POST['tresc']))
  6. {    
  7. echo "Nie uzupełniłeś wszystkich rubryk.";
  8. echo "<br>";
  9. echo "<a href='java script:history.go(-1)'>wróć</a>";
  10.  
  11. exit;  
  12. }
  13. srand((double)microtime()*1000000);
  14. $znacznik = md5(uniqid(rand()));
  15.  
  16. // dane o odbiorcy, nadawcy
  17. $odbiorca="email@tlen.pl";
  18. $tytul="tytuł";
  19. $nadawca = "Nadawca";
  20. $nadawca_mail="odkogo@tlen.pl";
  21.  
  22. // treść listu
  23. $wiadomosc =
  24. "Imie: ".$_POST['nick']."
  25. Nazwisko: ".$_POST['nazw']."
  26. Ulica: ".$_POST['ulica']."
  27. Kod pocztowy: ".$_POST['kod']."
  28. Miasto: ".$_POST['miasto']."
  29. Temat: ".$_POST['temat']."
  30. Telefon: ".$_POST['telefon']."
  31. E- mail: ".$_POST['mail']."
  32. Tresc: ".$_POST['tresc']."  ";
  33. $tematyka = "kontakt".$temat;
  34.  
  35. // definicja nagłówków
  36.  $naglowki  = "From: $nadawca <$nadawca_mail>\n";
  37.  $naglowki .= "MIME-Version: 1.0\n";
  38.  $naglowki .= "Content-Type: multipart/mixed;\n";
  39.  $naglowki .= "\tboundary=\"___$znacznik==\"";
  40.  
  41. // nagłówki listu
  42.  $tresc="--___$znacznik==\n";
  43.  $tresc .="Content-Type: text/plain; charset=\"iso-8859-2\"\n";
  44.  $tresc .="Content-Transfer-Encoding: 8bit\n";
  45.  $tresc .="\n$tresclistu\n";
  46.  
  47. // nagłówki i obsługa załącznika
  48.  $plik_nazwa_tmp = $_FILES["plik1"]["tmp_name"];
  49.  $plik_nazwa_oryginalna = $_FILES["plik1"]["name"];
  50.  $plik_wielkosc = $_FILES["plik1"]["size"];
  51.  
  52. if (is_uploaded_file($plik_nazwa_tmp))
  53.  {
  54.    $tresc .="--___$znacznik==\n";
  55.    $tresc .="Content-Type: image/gif\n";
  56.    $tresc .="Content-Disposition: attachment;\n";
  57.    $tresc .=" filename=\"$plik_nazwa_oryginalna\"\n";
  58.    $tresc .="Content-Transfer-Encoding: base64\n\n";
  59.    $f = fopen($plik_nazwa_tmp,"rb");
  60.    $dane = fread($f,filesize($plik_nazwa_tmp));
  61.    fclose($f);
  62.    $tresc .= chunk_split(base64_encode($dane));
  63.    $tresc .="--___$znacznik==--\n";
  64.  }
  65.  
  66. // wysłanie listu
  67.     if (mail($odbiorca,$tytul,$tresc,$naglowki ,$tematyka, $wiadomosc ))
  68.   {
  69.   print "E-mail z załącznikiem został wysłany poprawnie.";
  70.   }
  71.   else
  72.   {
  73.   print "E-mail NIE został wysłany poprawnie.
  74.   <br>Prosimy o <a href=\"java script:history.back();\">powrót</a> i wysłanie e-maila ponownie.";
  75.   }
  76. }
  77. ?>

błąd
Warning: mail() expects at most 5 parameters, 6 given in /wyslij.php on line 67
E-mail NIE został wysłany poprawnie.
Prosimy o powrót i wysłanie e-maila ponownie.
a jak usune to ,$tematyka,$wiadomosc to nie pokazuje mi tresci wiadomosci
Rafal Filipek
Masz za dużo parametrów dla funkcji mail co jasno wynika z błędu. Nie będę analizował twojego kodu, żeby sprawdzić co która zmienna przechowuje. zobacz jakie i w jakiej kolejnosci argumenty przyjmuje funkcja mail to poustawiaj wszystko ( dokumentacja ).

Na przyszłość dodam tylko że faktycznie istnieje coś takiego jak array_merge ale z tego co wiem nie ma czegos takiego jak metoda merdżowania argumentów funkcji ( dodatkowo z 2 róznych plików ;] )
dave666
WIem ze chcieliście pomóc ale ja nie rozumiem za bardzo co do mnie kolega Rafał pisze choć bardzo chciałbym to zrozumieć mimo wszystko dzięki za pomoc jak kiedyś dojde do rozwiazania to umieszcze gotowy skrypt
obelix94
Jak nie rozumiesz to poczytaj sobie trochę manuala php i link jaki podal ci @Rafal Filipek
dave666
Spoko problem rozwiązałem zaraz napisze rozwiazanie smile.gif

o to rozwiązanie zamiast funkcji (empty($_POST['nick']) po prostu zrobiłem tak i działa elegancko wysyła załacznik i treść wiecej pól sami sobie dopiszecie
plik wyslij.php
  1. <?php
  2. //sprawdzenie czy załącznik pochodzi z formularza
  3. if ($_POST["wyslij"]==1)
  4.    $nazwisko = $_POST["nazwisko"];
  5.  
  6. $imie = $_POST["imie"];
  7.  
  8. $email = $_POST["email"];
  9.  
  10. $tresc= $_POST["tresc"];
  11. {  
  12. srand((double)microtime()*1000000);
  13. $znacznik = md5(uniqid(rand()));
  14.  
  15. // dane o odbiorcy, nadawcy
  16. $odbiorca="email@email.pl";
  17. $tytul="tytuł wiadomoscil";
  18. $nadawca = "Nadawca";
  19. $nadawca_mail="email@email.pl";
  20.  
  21. // treść listu
  22. $tresclistu = "
  23. Nazwisko: $nazwisko
  24. Imię: $imie
  25. email: $email
  26. tresc: $tresc
  27.  
  28. ";
  29.  
  30.  
  31. // definicja nagłówków
  32.  $naglowki  = "From: $nadawca <$nadawca_mail>\n";
  33.  $naglowki .= "MIME-Version: 1.0\n";
  34.  $naglowki .= "Content-Type: multipart/mixed;\n";
  35.  $naglowki .= "\tboundary=\"___$znacznik==\"";
  36.  
  37. // nagłówki listu
  38.  $tresc="--___$znacznik==\n";
  39.  $tresc .="Content-Type: text/plain; charset=\"iso-8859-2\"\n";
  40.  $tresc .="Content-Transfer-Encoding: 8bit\n";
  41.  $tresc .="\n$tresclistu\n";
  42.  
  43. // nagłówki i obsługa załącznika
  44.  $plik_nazwa_tmp = $_FILES["plik1"]["tmp_name"];
  45.  $plik_nazwa_oryginalna = $_FILES["plik1"]["name"];
  46.  $plik_wielkosc = $_FILES["plik1"]["size"];
  47.  
  48. if (is_uploaded_file($plik_nazwa_tmp))
  49.  {
  50.    $tresc .="--___$znacznik==\n";
  51.    $tresc .="Content-Type: image/gif\n";
  52.    $tresc .="Content-Disposition: attachment;\n";
  53.    $tresc .=" filename=\"$plik_nazwa_oryginalna\"\n";
  54.    $tresc .="Content-Transfer-Encoding: base64\n\n";
  55.    $f = fopen($plik_nazwa_tmp,"rb");
  56.    $dane = fread($f,filesize($plik_nazwa_tmp));
  57.    fclose($f);
  58.    $tresc .= chunk_split(base64_encode($dane));
  59.    $tresc .="--___$znacznik==--\n";
  60.  }
  61.  
  62. // wysłanie listu
  63.     if (mail($odbiorca,$tytul,$tresc,$naglowki))
  64.   {
  65.   print "E-mail z załącznikiem został wysłany poprawnie.";
  66.   }
  67.   else
  68.   {
  69.   print "E-mail NIE został wysłany poprawnie.
  70.   <br>Prosimy o <a href=\"java script:history.back();\">powrót</a> i wysłanie e-maila ponownie.";
  71.   }
  72. }
  73. ?>


formularz html np: kontakt.html
  1. <FORM NAME="zalacznik" METHOD="post" ACTION="wyslij.php" ENCTYPE="multipart/form-data">
  2. Imię: <input type="text" id="nick" name="imie" ><br>
  3. Nazwisko: <input type="text" name="nazwisko" id="nazw"><br>
  4. Email:<input type="text" name="email" id="email" ><br>
  5. Tresc:<textarea name="tresc" id="tresc" rows="3" cols="20" ></textarea><br>
  6. <input type="hidden" name="wyslij" value="1" />
  7. <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
  8. Załącznik <INPUT type="file" name="plik1"><br><br>
  9. <INPUT TYPE="SUBMIT" VALUE="Wyślij zalacznik">
  10. </FORM>
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.