Mehrere Anhänge mit PHPMailer geht nicht

francosdad

Mitglied
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:

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

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

PHP:
$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
 
vielleicht so:

Code:
$mail->AddAttachment1("Pfad zur Datei1");
$mail->AddAttachment2("Pfad zur Datei2");
$mail->AddAttachment3("Pfad zur Datei3");
 
Hallo,

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

PHP:
$mail->AddAttachment();

Gruss
Michael
 
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:
PHP:
error_reporting(E_ALL | E_STRICT);
und poste hier eventuelle Fehler!
 
Kontrollier doch mal mit Hilfe der Funktion GetAttachments(), ob alle Dateien gespeichert werden. Am besten so:
PHP:
<?php print_r($mail->GetAttachments()); ?>
 
Kontrollier doch mal mit Hilfe der Funktion GetAttachments(), ob alle Dateien gespeichert werden. Am besten so:
PHP:
<?php print_r($mail->GetAttachments()); ?>


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

Code:
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
 

Anhänge

  • class.phpmailer.php.zip
    16,1 KB · Aufrufe: 49
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.
 
Zurück