Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Zend_Mail, kilka załączników
Forum PHP.pl > Forum > PHP > Frameworki
Master Pain
Witam

Mam problem z dołączeniem kilku plików do maila.

Kod:
  1. if($form->isValid($dane)) {
  2. if($form->zalaczniki->receive()) {
  3.  
  4. $dane = $form->getValues();
  5.  
  6. $mail = new Zend_Mail('utf-8');
  7. $mail->setFrom($dane['email'], $dane['imie_i_nazwisko'])
  8. ->setSubject($dane['temat'])
  9. ->setBodyHtml(nl2br($dane['tresc']))
  10. ->addTo('jakis.adres@domena.pl', 'Imię Nazwisko');
  11.  
  12. foreach($_FILES['zalaczniki']['name'] as $key => $nazwaPliku) {
  13. if($nazwaPliku != '') {
  14. $zalacznik = new Zend_Mime_Part(file_get_contents(APPLICATION_PATH.'/../upload/'.$nazwaPliku));
  15. $zalacznik->type = $_FILES['zalaczniki']['type'][$key];
  16. $zalacznik->disposition = Zend_Mime::DISPOSITION_ATTACHMENT;
  17. $zalacznik->filename = $nazwaPliku;
  18.  
  19. $mail->addAttachment($zalacznik);
  20. }
  21. }
  22.  
  23. $mail->send();
  24. }
  25. }


I wysyła mi jeden plik o wielkości = suma wielkości załączonych plików.

Jak zatem wysłać maila z kilkoma załącznikami?
Pilsener
Spróbuj tak (przez createAttachment):
  1. $body = 'Please find the zip file attached' ;
  2.  
  3. $mail = new Zend_Mail ();
  4. $mail -> setFrom ( 'support@example.com' , 'My Site Helpdesk' );
  5. $mail -> addTo ( 'awagstaff@gmail.com' , 'Alan Wagstaff' );
  6. $mail -> setSubject ( 'File attachment Test' );
  7. $mail -> setBodyText ( $body );
  8.  
  9. $fileContents = file_get_contents ( 'test_file.zip' );
  10. $attachment = $mail -> createAttachment ( $fileContents );
  11. $attachment -> filename = 'test_file.zip' ;
  12.  
  13. $mail -> send ();


Albo zmodyfikuj swój kod, na pierwszy rzut oka pracujesz cały czas na jednym obiekcie zapisanym w tej samej zmiennej, ja bym radził spróbować:
  1. $mail->addAttachment($zalacznik_1);
  2. $mail->addAttachment($zalacznik_2);
Master Pain
Dziękuję, pomogło [ten pierwszy sposób]. Ten drugi nie byłby zły, jeżeli chodzi o zmienne, bo przekazywane są do obiektu $mail jako obiekty i tam już są składowane, także nazwa nie miała tu znaczenia.

Kod teraz wygląda tak: [częściowo]
  1. foreach($_FILES['zalaczniki']['name'] as $key => $nazwaPliku) {
  2. if($nazwaPliku != '') {
  3. $at = $mail->createAttachment(file_get_contents(APPLICATION_PATH.'/../upload/'.$nazwaPliku));
  4. $at->type = $_FILES['zalaczniki']['type'][$key];
  5. $at->filename = $nazwaPliku;
  6. }
  7. }
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.