Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] mail()
Forum PHP.pl > Forum > Przedszkole
grzegorzko90
Witam. Stworzyłem formularz, którego zadaniem jest wysłanie zamówienia... Wszystko działa śmiga tylko jest jeden problem nie wiem jak zrobić ,żeby można było wysłać załącznik. Czytałem trochę na różnych stronach lecz nie znalazłem nic konkretnego (czyt. zrozumiałego dla mnie)

Załączam kod formularza i pliku php

  1. <form action="zam.php" method="post">
  2. <lable>Imię:*<br /> <input type="text" value="" name="imie" /></lable><br />
  3. <lable>Nazwisko:*<br /> <input type="text" value="" name="nazwisko" /></lable><br />
  4. <lable>E-mail:*<br /> <input type="text" value="" name="mail" /></lable><br />
  5. <lable>Firma: <br /> <input type="text" value="" name="firma" /></lable><br />
  6. <label>Opis zamówienia:* <br /> <input style="height: 150px ; width: 350px;" type="text" value="" name="opis" /></label><br />
  7. <lable>Plik (cdr,jpg,gif,pdf,png): <br /> <input type="file" value="" name="plik" /></lable><br /><br />
  8. <input type="submit" value="wyślij" />
  9. </form>


  1. <?php
  2. $imie=$_POST['imie'];
  3. $nazwisko=$_POST['nazwisko'];
  4. $mail=$_POST['mail'];
  5. $fimra=$_POST['firma'];
  6. $opis=$_POST['opis'];
  7. $plik=$_POST['plik'];
  8. $adresat="cos@gmail.com";
  9. $temat="Zamówienie online";
  10. $glowna_tresc=" Nadawca: " . $imie . " " . $nazwisko . " Email: " . $mail . " Treść: " . $opis;
  11.  
  12. if ($imie=="" OR $nazwisko=="" OR $mail=="" OR $opis=="")
  13. {
  14. exit ('wypełnij pola wymagane !');
  15. }
  16. else
  17. {
  18. $wyslij=mail($adresat, $temat, $glowna_tresc);
  19. if ($wyslij)
  20. {
  21. echo "<center><strong>Zamówienie zostało złożone !, Dziękujemy</strong></center>";
  22. }
  23. else
  24. {
  25. exit ('<center>Błąd podczas składania zamówienia, sprubj później</center>');
  26. }
  27. }
  28. ?>
tomekmvr
Musisz zmienić trochę formularz
zmieniasz
  1. <form action="zam.php" method="post">

na
  1. <form action="zam.php" method="post" enctype="multipart/form-data">


i jak odbierasz dane w drugim pliku co podałeś, to możesz sobie wybrać w jakim formacie mają być przyjmowane pliki
grzegorzko90
Ok, ale co dalej, co mam zmienić w kodzie ,żeby automatycznie dodawało załącznik do maila... czytałem coś o mail_attachment() ale powiem szczerze, wydaje mi się to trudne w zastosowaniu... zapewne wynika to z mojego braku obycia w PHP
nospor
Wpierw musisz plik uplodnac. Jak to się robi masz napisane tu:
http://pl.php.net/manual/pl/features.file-...post-method.php

Potem plik co pobrales masz dodac jako załącznik. O załącznikach masz napisane tu:
http://pl.php.net/manual/en/function.mail.php
szukaj tekstu "attachment"
Tu masz jeden z komentarzy z kodem, gdzie załącznik idzie z uploadu, czyli to co u Ciebie
http://pl.php.net/manual/en/function.mail.php#83491
grzegorzko90
Dzięki smile.gif, i wszystko stało się jaśniejsze.
Pozdrawiam
oi.
Cytat(nospor @ 28.10.2010, 07:43:12 ) *
Tu masz jeden z komentarzy z kodem, gdzie załącznik idzie z uploadu, czyli to co u Ciebie
http://pl.php.net/manual/en/function.mail.php#83491

Nospor skorzystałem z tego kodu i nie działa wysyłanie załączników - wysyła jedynie samą treść wiadomości.
Zastanawia mnie dlaczego w tym kodzie są 2 różne nazwy: $_FILES['youfile'] oraz $_FILES['fileatt']
  1. for($i=0; $i < count($_FILES['youfile']['name']); $i++){
  2. if(is_uploaded_file($_FILES['fileatt']['tmp_name'][$i]) &&


Do wysyłania e-maila i łączenia się z tym kodem używam :
  1. <div class="adres">
  2.  
  3. <form action="komentarz5.php" method="post" enctype="multipart/form-data">
  4. <input type="hidden" name="user" value="<?php echo $user; ?>" />
  5. <div><label><b>e-mail: </b> </label><br /> <input type="text" class="input" name="email" id="email" size="55" maxlength="35" value="<?php echo $email; ?>"/> <br /></div>
  6.  
  7. <div><label><b> Treść: </b> </label> <br /><textarea name="message" class="formularz" id="message" cols="50" rows="6"></textarea> <br />
  8. <input name="fileatt" type="file" class="kontakt" /> Dołącz załącznik
  9. </div>

Proszę o wskazanie błędu
nospor
Skoro Twoj input z plikiem nazywa się "fileatt" to masz uzywac "fileatt"
I nie pętli a pojedynczego wywolania. Tam na stronie byly rozne przyklady: z jednym plikiem, z kilkoma.
oi.
Ja robię z podanym przez Ciebie przykładem:
  1. <?php
  2. $to = "...@...pl";
  3. $email = $_POST['email'];
  4. $name = $_POST['name'];
  5. $subject = "temat wiadomosci";
  6. $comment = $_POST['message'];
  7.  
  8. $To = strip_tags($to);
  9. $TextMessage =strip_tags(nl2br($comment),"<br>");
  10. $HTMLMessage =nl2br($comment);
  11. $FromName =strip_tags($name);
  12. $FromEmail =strip_tags($email);
  13. $Subject =strip_tags($subject);
  14.  
  15. $boundary1 =rand(0,9)."-"
  16. .rand(10000000000,9999999999)."-"
  17. .rand(10000000000,9999999999)."=:"
  18. .rand(10000,99999);
  19. $boundary2 =rand(0,9)."-".rand(10000000000,9999999999)."-"
  20. .rand(10000000000,9999999999)."=:"
  21. .rand(10000,99999);
  22.  
  23.  
  24. for($i=0; $i < count($_FILES['fileatt']['name']); $i++){
  25. if(is_uploaded_file($_FILES['fileatt']['tmp_name'][$i]) &&
  26. !empty($_FILES['fileatt']['size'][$i]) &&
  27. !empty($_FILES['fileatt']['name'][$i])){
  28.  
  29. $attach ='yes';
  30. $end ='';
  31.  
  32. $handle =fopen($_FILES['fileatt']['tmp_name'][$i], 'rb');
  33. $f_contents =fread($handle, $_FILES['fileatt']['size'][$i]);
  34. $attachment[]=chunk_split(base64_encode($f_contents));
  35. fclose($handle);
  36.  
  37. $ftype[] =$_FILES['fileatt']['type'][$i];
  38. $fname[] =$_FILES['fileatt']['name'][$i];
  39. }
  40. }
  41.  
  42. /***************************************************************
  43.  Creating Email: Headers, BODY
  44.  1- HTML Email WIthout Attachment!! <<-------- H T M L ---------
  45.  ***************************************************************/
  46. #---->Headers Part
  47. $Headers =<<<AKAM
  48. From: $FromName <$FromEmail>
  49. Reply-To: $FromEmail
  50. MIME-Version: 1.0
  51. Content-Type: multipart/alternative;
  52.   boundary="$boundary1"
  53. AKAM;
  54.  
  55. #---->BODY Part
  56. $Body =<<<AKAM
  57. MIME-Version: 1.0
  58. Content-Type: multipart/alternative;
  59.   boundary="$boundary1"
  60.  
  61. This is a multi-part message in MIME format.
  62.  
  63. --$boundary1
  64. Content-Type: text/plain;
  65.   charset="windows-1256"
  66. Content-Transfer-Encoding: quoted-printable
  67.  
  68. $TextMessage
  69. --$boundary1
  70. Content-Type: text/html;
  71.   charset="windows-1256"
  72. Content-Transfer-Encoding: quoted-printable
  73.  
  74. $HTMLMessage
  75.  
  76. --$boundary1--
  77. AKAM;
  78.  
  79. /***************************************************************
  80.  2- HTML Email WIth Multiple Attachment <<----- Attachment ------
  81.  ***************************************************************/
  82.  
  83. if($attach=='yes') {
  84.  
  85. $attachments='';
  86. $Headers =<<<AKAM
  87. From: $FromName <$FromEmail>
  88. Reply-To: $FromEmail
  89. MIME-Version: 1.0
  90. Content-Type: multipart/mixed;
  91.   boundary="$boundary1"
  92. AKAM;
  93.  
  94. for($j=0;$j<count($ftype); $j++){
  95. $attachments.=<<<ATTA
  96. --$boundary1
  97. Content-Type: $ftype[$j];
  98.   name="$fname[$i]"
  99. Content-Transfer-Encoding: base64
  100. Content-Disposition: attachment;
  101.   filename="$fname[$j]"
  102.  
  103. $attachment[$j]
  104.  
  105. ATTA;
  106. }
  107.  
  108. $Body =<<<AKAM
  109. This is a multi-part message in MIME format.
  110.  
  111. --$boundary1
  112. Content-Type: multipart/alternative;
  113.   boundary="$boundary2"
  114.  
  115. --$boundary2
  116. Content-Type: text/plain;
  117.   charset="windows-1256"
  118. Content-Transfer-Encoding: quoted-printable
  119.  
  120. $TextMessage
  121. --$boundary2
  122. Content-Type: text/html;
  123.   charset="windows-1256"
  124. Content-Transfer-Encoding: quoted-printable
  125.  
  126. $HTMLMessage
  127.  
  128. --$boundary2--
  129.  
  130. $attachments
  131. --$boundary1--
  132. AKAM;
  133. }
  134.  
  135. /***************************************************************
  136.  Sending Email
  137.  ***************************************************************/
  138. $ok=mail($To, $Subject, $Body, $Headers);
  139. echo $ok?"<h1> Mail Sent </h1>":"<h1> Mail not SEND</h1>";
  140. ?>
nospor
W formularzu wczesniej mialies jedno pole z plikiem. Mowilem ci ze jak masz jedno to bez petli...

print_r($_FILES);
i sie przyjrzyj co tam jest a nie strzelasz smile.gif
oi.
Od południa ślęczę nad tym i nic
Już sam nie wiem jak to dostosować do mojego formularza by wysyłał jeden załącznik.
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.