Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]mail z załącznikiem
Forum PHP.pl > Forum > Przedszkole
Malcolmek
chcialbym bardzo wszystkich przywitac serdecznie.
Jestem totalnie raczkujacy.

Znalazlem na waszej stronie to czego wlasnie szukalem.
Skrypt do wysylania ze strony formularz + zalczniki (zdjecia)

Wszystko dziala, tylko nie wiem naprawde jak dodac aby byl wybor wiekszej ilosci zalacznikow.

w tej chwili jest jeden button "choose file" a chcialbym miec 4 wysylane pod jednego guzika sumujacego..

oto kod:

  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

  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>


probowalem na wiele sposobow zmieniac formularz html i zawsze wysyla tylk ostatni zalacznik..
Moglbym prosic ewentualnie o zerkniecie okiem co mozna zmienic??

z gory bardzo dziekuje

podbijam...
grzes999
Napisz w formularzu takie coś.
  1. Załącznik <INPUT type="file" name="plik1[]"><br><br>


Wtedy pliki będą zapisane w tablicy i za pomocą pętli to odbierzesz w php.
Malcolmek
Zrobilem tak, ale w tej chwili zaden zalacznik nie dochodzi..


  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. Załącznik <INPUT type="file" name="plik1[]"><br><br>
  10. Załącznik <INPUT type="file" name="plik1[]"><br><br>
  11.  
  12.  
  13.  
  14. <INPUT TYPE="SUBMIT" VALUE="Wyślij zalacznik">
  15. </FORM>
nospor
....
A kod php poprawiłeś?
Tak? - To go pokaż
Nie? - to go popraw do nowej struktury formularza...
Malcolmek
nie poprawilem bo nie wiem jak...
Malcolmek
przepraszam mozecie mnie miec za totalnego imbecyla, ale niestety nie wiem jak to zrobic. Bylby ktos taki dobry i zobaczylby ten kod, tak aby dzialalo?

naprawde bede bardzo wdzieczny..
daniel1302
Cały gotowy kod masz w googlach(20 sec szukania)
http://krysk.jogger.pl/2008/02/13/php-mail...ail-attachment/

z tym, że $files u blogera to u ciebie $files = $_POST['pliki']
Malcolmek
a moglbys wstawic to co napisales do tego skryptu? bo ja naprawde nei wiem gdzie. przepraszam ze tak mecze jeszcze jako nowy uzywtkownik, ale bardzo mi zalezy a nie mam do kogo sie zglosic..
  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.  
  49.  
  50. if (is_uploaded_file($plik_nazwa_tmp))
  51. {
  52. $tresc .="--___$znacznik==\n";
  53. $tresc .="Content-Type: image/gif\n";
  54. $tresc .="Content-Disposition: attachment;\n";
  55. $tresc .=" filename=\"$plik_nazwa_oryginalna\"\n";
  56. $tresc .="Content-Transfer-Encoding: base64\n\n";
  57. $f = fopen($plik_nazwa_tmp,"rb");
  58. $dane = fread($f,filesize($plik_nazwa_tmp));
  59. fclose($f);
  60. $tresc .= chunk_split(base64_encode($dane));
  61. $tresc .="--___$znacznik==--\n";
  62. }
  63.  
  64. // wysłanie listu
  65. if (mail($odbiorca,$tytul,$tresc,$naglowki))
  66. {
  67. print "E-mail z załącznikiem został wysłany poprawnie.";
  68. }
  69. else
  70. {
  71. print "E-mail NIE został wysłany poprawnie.
  72. <br>Prosimy o <a href=\"java script:history.back();\">powrót</a> i wysłanie e-maila ponownie.";
  73. }
  74. }
  75. ?>
grzes999
Cytat(daniel1302 @ 23.02.2013, 20:52:01 ) *
Cały gotowy kod masz w googlach(20 sec szukania)
http://krysk.jogger.pl/2008/02/13/php-mail...ail-attachment/

z tym, że $files u blogera to u ciebie $files = $_POST['pliki']


Od kiedy pliki są w tablicy POST??

  1. for($i=0;$i<count($_FILE['plik1']['tmp_name']);$i++)
  2. {
  3. // tutaj robisz zapis jak robiłeś to poprzedni. Do parametrów pliku dostajesz się tak $_FILE['plik1']['tmp_name'][$i]
  4. }


I to wszystko. Jak jest jakiś błąd to sam kombinuj.
  1. for($i=0;$i<count($_FILE['plik1']['tmp_name']);$i++)
  2. {
  3. if (is_uploaded_file($_FILE['plik1']['tmp_name'][$i]))
  4. {
  5. $tresc .="--___$znacznik==\n";
  6. $tresc .="Content-Type: image/gif\n";
  7. $tresc .="Content-Disposition: attachment;\n";
  8. $tresc .=" filename=\"".$_FILES["plik1"]["name"][$i]."\"\n";
  9. $tresc .="Content-Transfer-Encoding: base64\n\n";
  10. $f = fopen($plik_nazwa_tmp,"rb");
  11. $dane = fread($f,filesize($_FILE['plik1']['tmp_name'][$i]));
  12. fclose($f);
  13. $tresc .= chunk_split(base64_encode($dane));
  14. $tresc .="--___$znacznik==--\n";
  15. }
  16. }
Malcolmek


Dziekuje bardzo za pomoc. Jestem wdzieczny. Ale nadal nie dziala.. Moze jetsecie w stanie poprostu wpisac to w kod?
Malcolmek
niestety nie wiem nie znam sie.

Zlece oczywiscie odplatnie upgradowanie tego skrytptu jak w temacie.
Uprzejmie prosze chetnych na priv`a

podbijam. chetnie zlece przerobienie tego skryptu. Wiecej prosze na priv.

zlece oczywiscie za zaplate smile.gif
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.