# Mehrere Anhänge mit PHPMailer geht nicht



## francosdad (2. Juni 2009)

Hallo,

ich habe folgendes Problem. 

Mit der neusten Version der PHPMailer Klasse versuche ich Emails zu versenden, was auch anstandslos funktioniert.

Wenn ich jedoch mehrere Anhänge anfügen will, wird immer nur der erste mitgeschickt, die anderen werden einfach ignoriert.

Laut Beschreibung füge ich jeden Anhang mit:


```
$mail->AddAttachment("Pfad zur Datei");
```
an.

Was nach meinem Verständnis bei mehreren Dateien so aussehen müsste:


```
$mail->AddAttachment("Pfad zur Datei1");
$mail->AddAttachment("Pfad zur Datei2");
$mail->AddAttachment("Pfad zur Datei3");
```

Die Dateien existieren auch auf jeden Fall, denn wenn ich jeweils die Datei einzeln einsetze, dann wird sie mitgeschickt. Aber eben immer nur die erste.

Hat jemand eine Idee woran das liegen könnte?

Grüße
Michael


----------



## cinema (2. Juni 2009)

vielleicht so:


```
$mail->AddAttachment1("Pfad zur Datei1");
$mail->AddAttachment2("Pfad zur Datei2");
$mail->AddAttachment3("Pfad zur Datei3");
```


----------



## francosdad (2. Juni 2009)

Hallo,

das funktioniert leider nicht.
Die Documentation besagt eigentlich auch, dass jeder weitere Anhang über die selbe Funktion aufgerufen wird.


```
$mail->AddAttachment();
```

Gruss
Michael


----------



## Duxias (2. Juni 2009)

1. Welche Mailerklasse ist das denn? Vielleicht postest du mal den Code.
2. Hast du error_reporting() auf E_ALL eingestellt? Wenn nicht, setz mal ganz an den Anfang deines Codes folgendes:

```
error_reporting(E_ALL | E_STRICT);
```
 und poste hier eventuelle Fehler!


----------



## francosdad (2. Juni 2009)

Hallo,

es gibt keine Fehlermeldung, welche sich auf die Methode AddAttachment bezieht.

Es handelt sich um die Klasse PHPMailer -> http://phpmailer.codeworxtech.com

Gruss
Michael


----------



## Duxias (3. Juni 2009)

Kontrollier doch mal mit Hilfe der Funktion GetAttachments(), ob alle Dateien gespeichert werden. Am besten so:

```
<?php print_r($mail->GetAttachments()); ?>
```


----------



## francosdad (3. Juni 2009)

Duxias hat gesagt.:


> Kontrollier doch mal mit Hilfe der Funktion GetAttachments(), ob alle Dateien gespeichert werden. Am besten so:
> 
> ```
> <?php print_r($mail->GetAttachments()); ?>
> ```




Wenn ich 

```
print_r ($mail->GetAttachments);
```
ausgeben lasse, dann werden meine Beispielanhänge korrekt in ein Array bzw. in das Attachment-Array eingefügt:


```
Array
        (
            [0] => Array
                (
                    [0] => /media/sda3/xampp/xampp/htdocs/upload/brezel.jpg
                    [1] => brezel.jpg
                    [2] => brezel.jpg
                    [3] => base64
                    [4] => application/octet-stream
                    [5] => 
                    [6] => attachment
                    [7] => 0
                )

            [1] => Array
                (
                    [0] => /media/sda3/xampp/xampp/htdocs/upload/fotolia_2016123.jpg
                    [1] => fotolia_2016123.jpg
                    [2] => fotolia_2016123.jpg
                    [3] => base64
                    [4] => application/octet-stream
                    [5] => 
                    [6] => attachment
                    [7] => 0
                )

            [2] => Array
                (
                    [0] => /media/sda3/xampp/xampp/htdocs/upload/fotolia_13866130.jpg
                    [1] => fotolia_13866130.jpg
                    [2] => fotolia_13866130.jpg
                    [3] => base64
                    [4] => application/octet-stream
                    [5] => 
                    [6] => attachment
                    [7] => 0
                )
```

Die Methode AddAttachment fügt innerhalb der Klasse phpmailer die Anhänge zu einem Array zusammen.

Also scheint der Fehler in der Klasse zu liegen beim versenden.

Ich habe die Klasse mal als Anhang zu diesem Thread beigefügt.

Danke für eure Hilfe.

Grüsse
Michael


----------



## Josias (25. Februar 2010)

Hat sich eine Lösung ergeben? Ich stehe am selben Ort.
Gruss Josias


----------



## francosdad (25. Februar 2010)

Nicht wirklich.

Ich bin auf den SwiftMailer umgestiegen. Der ist auch schneller.

Grüße
Micha


----------



## Marco_M (22. März 2010)

Falls es noch jemanden interessiert:

Anscheinend wurde beim debuggen vergessen ein zum Test geändertes Array wieder umzuschreiben. Der Fehler lässt sich korrigieren indem man in der Klassendatei nach der Methode "public function AddAttachment" sucht und dort das erzeugte Array folgendermaßen verändert:

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

Das 7./8. Feld wird im Originalcode seltsamerweise auf 0 gesetzt, weshalb nur der erste Anhang eingefügt wird.


----------



## whitesilver (27. April 2010)

Hi,

warum nicht so?

```
<?php

//Array basteln
$auswahl_arr = array("datei_1.pdf","datei_2.pdf","datei_3.pdf");

//Schleifchen drumherum
(...)
for($i=0; $i < count($auswahl_arr); $i++)
   {
   $mail->AddAttachment($auswahl_arr[$i]);
   }
(...)

?>
```
Bei meiner Seite hats wunderbar geklappt.

Gruß Whitesilver


----------

