Bastian: Maximale Größe eines Zip-Archivs bestimmen

Beitrag lesen

Hallo Willi,

Das Problem ist so alt wie die Email-Protokolle. Offenbar hat mindestens einer der Mailserver der Empfänger die Annahme des Mails wegen dessen Übergröße verweigert.

Ja, so wird es sein.

  • splitte ab 1 MB, versende dann mehrere Mails.

Hm, 1 MB ist wirklich übelst wenig.

PDFs lassen sich kaum packen. Die Gesamtgröße des Zips entspricht in etwa der Summe aller darin enthaltener Dateien - kann aber (wegen im zip enthaltener Meta-Daten) sogar geringfügig größer sein.

Mir gehts bei den PDFs weniger darum, sie durchs packen kleiner zu machen, als mehr darum, nicht hunderte Dateianhänge zu versenden, sondern nur einen oder nur wenige.

Wie „mitteilen“? Das muss man programmieren. Und das ist vorliegend trivial. Freilich muss man dazu wissen was dass offenbar abgeschriebene Zeug überhaupt macht. Also lerne wenigstens die bittersten Grundlagen der von Dir verwendeten Programmiersprache. Anders geht es nicht!

Na, nun sei doch nicht so böse mir mir, Willi. 😉
Geht doch nur darum, dass ich nicht weiß, ob die php-Zip-Klasse dafür bereits irgendwelche Methoden bereit stellt oder ob ich das "zu Fuss" programmieren muss.
Ist mir halt schon oft passiert, dass ich etwas umständlich zu Fuss programmiert habe und anschließend z.b. hier erfahren habe, dass ich mir das alles hätte sparen können, weils sowas schon quasi fertig gibt.

Im Moment tendiere ich sogar zu einer etwas anderen Lösung:

Denn bisher ging ich immer davon aus, per cron einmal/Zeiteinheit eine Email mit den gezippten Dokumenten heraus zu schicken. Aber vielleicht wäre es viel schlauer, den cron täglich zu starten und in unregelmäßigen Abständen eine Email mit einer max. großen Zip zu versenden. Naja, aber kunden freundlich ist auch anders. 😑

Also meinst Du, es ist tatsächlich so, dass ich innerhgalb der Schleife anhand der kummulierten PDF-Größen (oder etwa der bisherigen Zip-Datei?) entscheide, wann ich eine neue Zip anfange und später je Datei eine Email versende?

Quasicode:

foreach (Dateiarray AS Einzeldatei) {
    Ab_in_die_Zip
    Größe_der_Zip_messen
    Wenn > 900KB {
        close_zip_und_mailversand
        Dann nächste Zip
    }
}

Danke für Deinen Hilfe 🙂

Bastian