IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[PHPMailer] Pièce jointe trop volumineuse


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Points : 26
    Points
    26
    Par défaut [PHPMailer] Pièce jointe trop volumineuse
    Bonjour,

    J'ai un souci lors de l'envoi d'un mail avec PHPMailer. À ce mail est attaché un document PDF pesant environ 8 Mo (c'est un e-book de plus de 400 pages).
    J'obtiens alors l'erreur PHP suivante :

    Fatal error: Out of memory (allocated 21757952) (tried to allocate 11888245 bytes) in /homepages/15/d310217264/htdocs/package/phpmailer/class.phpmailer.php on line 1260

    Plus précisément, ça bloque sur cette ligne de code au sein de la méthode EncodeString de la classe PHPMailer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $encoded = chunk_split(base64_encode($str), 76, $this->LE);
    Pour infos :
    - La version de PHPMailer est la 2.3
    - Le mailer utilisé est "mail"
    - L'hébergement est le Pack Perso Initial chez 1and1 (mutualisé)
    - Ça fonctionne avec un document PDF de 4 Mo

    Que puis-je faire pour résoudre ce problème ?

    Merci de votre aide !

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Personne ? Je pensais pourtant que ce genre de bug était courant...

    J'ai fait quelques recherches et ça m'a amené à modifier le memory_limit de PHP en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    init_set('memory_limit', '16M')
    Là j'ai alors un nouveau message d'erreur :

    Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 11583417 bytes) in /homepages/15/d310217264/htdocs/package/phpmailer/class.phpmailer.php on line 1260

    Celui-ci semble toujours venir d'un problème de mémoire.
    Je tente donc un init_get('memory_limit') pour voir quelle taille est allouée par défaut et ça me retourne : 40M.

    Le passage d'un message d'erreur à un autre se fait à 33M :
    - pour memory_limit < 33M : Allowed memory size ...
    - pour memory_limit >= 33M : Out of memory ...

    Si j'ai bien compris le premier message d'erreur (out of memory) ça signifie : "Dépacement de la mémoire : 21757952 bytes sont déjà alloués et on tente d'en allouer 11888245 de plus". Si on additionne ces deux valeurs on obtient environ 33 Mbytes. Si j'ai 40M de mémoire disponible, je ne vois pas pourquoi ça bloque à 33M !

  3. #3
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par Bioteck Voir le message
    Personne ? Je pensais pourtant que ce genre de bug était courant...
    les e-mails ne sont pas fait pour envoyer des gros fichiers, dans ce genre de cas il vaut mieux mettre un lien HTTP dans l'e-mail ou si c'est un très gros fichier, un lien FTP
    GNAP !

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    En effet, j'ai l'impression qu'il n'y a rien à faire...

    Je pense qu'en découpant le PDF en plusieurs morceaux (archives RAR) ça aurait pu résoudre le problème mais ce n'est pas très user-friendly.

    De toute façon, mon client s'est résolu à utiliser un lien HTTP plutôt que d'envoyer directement par mail donc on va en rester là !

Discussions similaires

  1. piéce jointe trop lourde javamail
    Par chlock62 dans le forum Android
    Réponses: 0
    Dernier message: 13/03/2014, 15h50
  2. [PHP 5.2] [PHPMailer] - pièce jointe corrompue
    Par gussoner dans le forum Langage
    Réponses: 12
    Dernier message: 06/05/2013, 21h49
  3. [PHPMailer] Pièces jointes
    Par Riri80 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 23/04/2010, 13h54
  4. [PhpMailer]Pièces jointes n'apparaissant pas.
    Par johweb dans le forum Langage
    Réponses: 1
    Dernier message: 01/04/2009, 17h47
  5. [PHPMailer] Pièce jointe en local
    Par meda dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 28/10/2005, 18h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo