Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> mail z załącznikiem
1maciek
post
Post #1





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 12.10.2004

Ostrzeżenie: (10%)
X----


Witam,
Mam pytanie, tak jak w temacie, czy jest możliwe wysłanie maila z załącznikiem bez wcześniejszego uploadowania pliku-załącznika na serwer?
Sytuacja jest taka: jest strona z formularzem kontaktowym gdzie można dołączyć plik-załącznik, dane z formularza są przetwarzane i wysyłany jest mail. Aby dodać załącznik uploadowałem plik na serwer, ale pojawił się problem, gdy załącznik miał więcej niż 2 MB serwer wyrzucał błąd:Fatal error: Allowed memory size of 10485760 bytes exhausted (tried to allocate 3266122 bytes) in ***/www/phpmailer/class.smtp.php on line 307
, dodam że wysyłałem maila poprzez bibliotekę phpmailer.

kod skryptu wysyłającego wiadomość

  1. <?php
  2. $form = true;
  3. if(isset($_POST['imienazwisko'])) {
  4.  
  5. $imienazwisko = strip_tags(stripslashes(trim($_POST['imienazwisko'])));
  6. $firma = strip_tags(stripslashes(trim($_POST['firma'])));
  7. $email = strip_tags(stripslashes(trim($_POST['email'])));
  8.  
  9. if(!empty($_FILES['plik']['name'])) {
  10. $pname = $_FILES['plik']['name'];
  11. $pnametmp = $_FILES['plik']['tmp_name'];
  12.  
  13. while(file_exists(TMP_DIR.$pname)) {
  14. $count = rand(1, 99);
  15. $part = explode('.', $pname);
  16. $part[0] .= $count;
  17. $pname = $art[0].'.'.$part[1];
  18.  }
  19. move_uploaded_file($pnametmp, 'tmp/'.$pname); 
  20.  }
  21.  
  22. $tresc = '<b>Imię i nazwisko:</b> $imienazwisko<br>';
  23. $tresc .= '<b>Firma:</b>'.$firma.'<br>';
  24. $tresc .= '<b>E-mail:</b>'.$email.'<br>';
  25.  
  26. $mail = new PHPMailer();
  27.  
  28. $mail->IsSMTP();
  29.  
  30. $mail->From  = '';
  31. $mail->FromName = 'Serwis Remco';
  32. $mail->AddAddress('aaa@aaa.pl');
  33.  
  34. $mail->WordWrap = 50;  
  35. $mail->AddAttachment('tmp/'.$pname);
  36. $mail->IsHTML(true);
  37.  
  38. $mail->Subject = 'temat';
  39. $mail->Body  = $tresc;
  40. $mail->AltBody = $tresc;
  41.  
  42.  
  43. if(!$mail->Send()) $send_error = true;
  44. if(isset($pname)) unlink('tmp/'.$pname);
  45. }
  46. ?>


Ustawienia serwera pozwalają na upload plików do 15 MB, a pamięć na wykonanie skryptu to 10MB.
Może ktoś wie co można z tym zrobić?
Dzięki za pomoc.

Ten post edytował 1maciek 16.11.2006, 15:52:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thornag
post
Post #2





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


To przeciez zalezy od konfiguracji samego serwera.

W php.ini sa trzy wllasciwosci za to odpowiadajace, max_upload_filesize, max_post_size, i max_memory (nazwy nie sa dokladne nie pamietam teraz). To je musisz ustawic tak, zeby skrypt mogl zajac sie wiekszym plikiem.

Teraz to zalezy gdzie hostujesz strone, jesli wlasny serwer to wal do php.ini i zmien, jesli wykupiony gdzies to skonaktuj sie z adminem i zapytaj jak mozesz takie rzeczy zmieniac. W home.pl o ile sie nie myle wystarczy stworzyc dodatkowy php.ini w katalogu z ktorego strona jest czytana i w nim wlasnie umiescic zmiany. No ale jak mowilem, administrator.
Go to the top of the page
+Quote Post
mysz0n
post
Post #3





Grupa: Zarejestrowani
Postów: 78
Pomógł: 1
Dołączył: 16.08.2006
Skąd: szy-ły

Ostrzeżenie: (0%)
-----


Cytat(thornag @ 18.11.2006, 18:48:32 ) *
W home.pl o ile sie nie myle wystarczy stworzyc dodatkowy php.ini w katalogu z ktorego strona jest czytana i w nim wlasnie umiescic zmiany.


dokładnie - w home.pl jest tak jak piszesz, rozmawiałem ostatnio na czacie pomocy bo tez chciałem cos pozmieniac w php.ini.
dodatkowo nie ma co sie bac ze cos mozna namieszac - jesli cos przestanie działac - usuwasz twoj plik php.ini i wszystko wraca do normy.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 04:55