Neverseen: Mail mit mehreren Anhängen versenden (2. wird abgeschnitten)

Hallo Forum ich habe ein Problem mit dem versenden von E-Mails mit mehr als einem Dateianhang.

Eigentlich klappt alles wunderbar aber wenn ich die Mail erhalte dann ist der 2. Anhang abgeschnitten und nicht zu verwenden :-(

Hier mal der Code zum senden:

$me = "meinemail@adresse.de";
$kname = "Main Name";
$server= "Server IP oder Name";
$kontrolle = "nocheine@mail.de";
$fp = fsockopen("$server", 25);
$line = fgets($fp, 1024);
fputs($fp, "HELO\r\n");
fputs($fp, "MAIL FROM: <$me>\r\n");
$line = fgets($fp, 1024
fputs($fp, "RCPT TO: <$email>\r\n
$line = fgets($fp, 1024
fputs($fp, "RCPT TO: <$kontrolle>\r\n");
$line = fgets($fp, 1024
fputs($fp, "DATA\r\n");
$line = fgets($fp, 1024);
fputs($fp, "Subject: Überschrift\r\n");
fputs($fp, "Reply-To: $kname <$me>\r\n");
fputs($fp, "From: $kname <$me>\r\n");
fputs($fp, "To: $firma - $vorname $name1 <$email>\r\n");
$date=date("D, d M Y H:i:s");
fputs($fp, "Date: $date GMT\r\n");
$boundary1=strtoupper(md5(uniqid(time())));
$boundary2=strtoupper(md5(uniqid(time())));
fputs($fp, "MIME-Version: 1.0\nContent-
Type:multipart/mixed;\n\tboundary="$boundary1"\n\n");
fputs($fp, "Kann kein MIME\n");
fputs($fp, "\n--$boundary1\n");
fputs($fp, "Content-Type: multipart/alternativ;\n");
fputs($fp, "\tboundary="$boundary2"\r\n");
fputs($fp, "\n--$boundary2\r\nContent-Type: text/plain;\n\tcharset="us-
ascii"\r\nContent-Transfer-Encoding: 7bit\r\n\n");
fputs($fp, "Text\n");
fputs($fp, "\n--$boundary2--\r\n");
//DATEI
fputs($fp, "\n--$boundary1\nContent-type:
application/pdf;\n\tname="$datei"\nContent-Transfer-Encoding:
base64\nContent-Disposition:
attachment;\n\tfilename="$datei"\n\n");
$dateiinhalt = chunk_split(base64_encode(fread(fopen($datei, "r"),
filesize($datei)))); //
fputs($fp, ""$dateiinhalt"\n");
$datei="Datei2";
fputs($fp, "\n--$boundary1\nContent-type:
application/pdf;\n\tname="$datei"\nContent-Transfer-Encoding:
base64\nContent-Disposition:
attachment;\n\tfilename="$datei"\n\n");
$dateiinhalt = chunk_split(base64_encode(fread(fopen($datei, "r"),
filesize($datei)))); //
fputs($fp, ""$dateiinhalt"\n");
fputs($fp, "--$boundary1--\n");
fputs($fp, "\r\n.\r\n");
fputs($fp, "QUIT");
fclose($fp);

ist vielleicht etwas viel aber dann habt ihr alles ...
Für Hilfe wäre ich sehr dankbar!

  1. wenn ich du wäre würde ich das programm neu schreiben. es ist ja fast nicht zu erkennen, dass das Perl ist.

    ich empfehle dir das MIME::Lite modul zu benutzen.

  2. Autsch, warum fertige Module nutzen, wenn man auch alles von Hand machen kann (oder was hast Du dabei gedacht?).

    Du kannst Dir eine Menge Arbeit und Ärger sparen, wenn Du das Perl Modul MIME::Lite nutzt (Documentation: www.span.org).

    Beispiel:

    use MIME::Lite;
    usr strict;

    .... blabla .....

    Mail-Message

    my $mime_msg = MIME::Lite->new(
     From => $from_addr,
     To => $to_addr,
     Subject => 'Subject der Mail,
     Type => 'TEXT',
     Data => 'Der Text erscheint direkt in der Mail.',
    ) or die "Error creating MIME body: $!\n";

    PDF 1 anhaengen

    $mime_msg->attach(
     Type => 'application/pdf',
     Path => $mail_file,
     Filename=> $filename1
    ) or die "Error attaching document 1: $!\n";

    PDF 2 anhaengen

    $mime_msg->attach(
     Type => 'application/pdf',
     Path => $mail_file,
     Filename=> $filename2
    ) or die "Error attaching document 2: $!\n";

    und raus damit

    $mime_msg->send();

    Die Methode attach kannst Du beliebig oft, mit beliebigen MIME-Types ausführen.

    Stephan

    1. Das muss natürlich

      use strict;

      und nicht "usr strict;" heissen, sorry.

      Stephan

  3. Moin!

    Eigentlich klappt alles wunderbar aber wenn ich die Mail erhalte dann ist der 2. Anhang abgeschnitten und nicht zu verwenden :-(

    Du willst nicht ernsthaft behaupten, dass du per fsockopen SMTP mit dem Server sprichst, oder? Zum SMTP-Sprechen gehört es sich nämlich auch, die Rückmeldungen des Empfängers auszuwerten - darauf verzichtest du aber.

    Was ist übrigens an der Funktion mail() so verwerfliches dran? Die macht ganz simpel das, was du hier mega-aufwendig realisiert hast. Und mit etwas Suchaufwand findest du für PHP auch reichlich Mime-fähige Mail-Klassen oder -Funktionen, die du einsetzen kannst - und dich dann nicht mehr mit solchem Low-Level-Müll rumärgern mußt.

    - Sven Rautenberg

    --
    ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|