Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PHPMailer problem z załączeniem >1 załącznika
adrian1987
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 23.12.2005

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


Hej, właśnie podłączyłem u siebie klasę PHPMailer i wszystko mi działa poza 1 faktem, gdy dołączam więcej niż 1 załącznik to wysyłany jest tylko ten pierwszy dodany, reszta nie jest załączana...
Czy komuś się udało na tej klasie wysłać więcej niż 1 załącznik do maila??
mój kod wygląda następująco
  1. <?php
  2. $tresc = "jakaś tam treść";
  3.        require("phpmailer/class.phpmailer.php");
  4.        $mail = new PHPMailer();
  5.        
  6.        $mail->PluginDir = "phpmailer/";
  7.        $mail->From = "adres"; //adres naszego konta
  8.        $mail->FromName = "phpMailer tester";//nagłówek From
  9.        $mail->Host = "serwer SMTP";//adres serwera SMTP
  10.        $mail->Mailer = "smtp";
  11.        $mail->Username = "xxx";//nazwa użytkownika
  12.        $mail->Password = "xxx";//nasze hasło do konta SMTP
  13.        $mail->SMTPAuth = true;
  14.        $mail->SetLanguage("pl", "phpmailer/language/");
  15.        $mail->CharSet = 'utf-8';
  16.        
  17.        $mail->Subject = "E-mail z fomularza na stronie WWW";//temat maila
  18.        $mail->AddReplyTo($_POST['email']);
  19.        
  20.        // w zmienną $text_body wpisujemy treść maila
  21.        $text_body = $tresc;
  22.        
  23.        $mail->Body = $text_body;
  24.        // adresatów dodajemy poprzez metode 'AddAddress'
  25.        $mail->AddAddress("odbiorca","Adrian");
  26.        
  27.        //dodajemy załączniki
  28.        $files = $_FILES['files'];
  29.        $x = count($files['name']);
  30.        if($files['name'][0] != NULL)
  31.        {
  32.            for($i=0; $i<$x; $i++)
  33.            {
  34.                $mail->AddAttachment($files['tmp_name'][$i],$files['name'][$i]);
  35.                echo('Plik: '.$files['name'][$i].' został załączony do e-maila<br />');
  36.            }
  37.        }
  38.        
  39.        //wysyłamy wiadomość e-mial.
  40.        if(!$mail->Send())
  41.        {
  42.            echo "Wystąpił błąd, niestety wiadomość nie została wysłana.<br>";
  43.            echo $mail->ErrorInfo."<br>";
  44.        }
  45.        else echo "Twoja wiadomość została wysłana.";
  46.        
  47.        // Clear all addresses and attachments
  48.        $mail->ClearAddresses();
  49.        $mail->ClearAttachments();
  50. ?>

I w tej pętli for w której przechodzę po tablicy $files żeby dodać wszystkie załączniki echo wyświetla wszystko poprawnie, czyli pętla przeszła po całej tablicy i wszystko zostało dobrze odczytane, ale linia wyżej $mail->AddAttachment() niestety coś musiała nie zadziałać poprawnie, albo ja o czymś nie wiem... bo w mailu jest zawsze tylko pierwszy załącznik. Czy może ta klasa ma jakieś ograniczenie do tylko 1 załącznika??
znalazłem w necie coś takiego: LINK i dokładnie tak mam... oni w tym przykładzie załączają 2 pliki, czyli powinna być taka możliwość...

co jest dziwne to fakt, iż jak pogrzebałem w strukturze klasy to odnalazłem funkcję która pokazuje tablicę attachment w której przetrzymywane są załączniki w klasie no i wszystkie które dodaje tam występują, nie mam zatem pojęcia dlaczego w wysłanym e-mailu ich nie ma...

Ten post edytował adrian1987 12.05.2009, 16:46:17
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
niedarek
post
Post #2





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 23.11.2008

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


Podobno ten problem występuje przy korzystaniu z smtp.
To jest jakiś bug, na stronie: strona jest takie rozwiązanie:

Trzeba zmodyfikować linię 1236 w pliku class.phpmailer.php:
wstawić:
7 => count($this->attachment)
zamiast:
7 => 0

U mnie pomogło (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Kod
    
  
    
   before:
         $this->attachment[] = array(
           0 => $path,
           1 => $filename,
           2 => $name,
           3 => $encoding,
           4 => $type,
           5 => false,  // isStringAttachment
           6 => 'attachment',
           7 => 0
         );
   now:
         $this->attachment[] = array(
           0 => $path,
           1 => $filename,
           2 => $name,
           3 => $encoding,
           4 => $type,
           5 => false,  // isStringAttachment
           6 => 'attachment',
   //        7 => 0
           7 => count($this->attachment)
         );


Ten post edytował niedarek 25.06.2009, 15:46:13
Go to the top of the page
+Quote Post
pieto
post
Post #3





Grupa: Zarejestrowani
Postów: 227
Pomógł: 1
Dołączył: 12.05.2002
Skąd: gdańsk

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


u mnie, nie (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post

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: 23.08.2025 - 19:00