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

Langage PHP Discussion :

[PHPMailer] - pièce jointe corrompue [PHP 5.2]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 100
    Par défaut [PHPMailer] - pièce jointe corrompue
    Bonjour à tous,

    je m'arrache les cheveux sur un problème d'envoi de fichier avec PHPMailer. En local tout fonctionne très bien. Depuis le serveur, je recois le mail, avec la pièce jointe, même celle-ci ne s'ouvre pas : elle est corrompue.

    Je pense que mon script est correct vue qu'il fonctionne en local...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    <?php
    function mail($nom_expediteur,$mail_expediteur,$nom_destinatire,$mail_destinatire,$objet,$email_body,$piecesJointes=0,$accuse=0)
    {
        include_once(PATH_A_RESSOURCES."class.phpmailer.php");
        $mail = new PHPmailer();
        $mail->SetLanguage('fr', $lang_path = PATH_A_RESSOURCES."phpmailer/language/");
        $mail->IsMail();
        $mail->IsSMTP(true);
        $mail->Host=HOST;
        $mail->Username=USERNAME;
        $mail->Password=PASSWORD;
        $mail->SMTPAuth=true;
        $mail->IsHTML(true);
        $mail->From=$mail_expediteur;
        $mail->FromName=$nom_expediteur;
        $mail->AddAddress($mail_destinatire);
        $mail->AddReplyTo ($mail_expediteur);   
     
        if($accuse==1)
        {
            $mail->ConfirmReadingTo=$mail_expediteur;
        }
     
        $mail->Subject=utf8_decode($objet);
        $mail->Body=utf8_decode($email_body);
     
        /*if(!empty($piecesJointes))
        {
           foreach($piecesJointes as $element)
            {
                $mail->AddAttachment($element);
            }
        }*/
     
        $mail->AddAttachment("./image.jpg"); //ajout d'une pièce jointe au plus simple. Mon image est "propre" et le chemin aussi
     
        if(!$mail->Send()){
        $isValidate = false;
        exit(ALERT_ERROR."Erreur durant l'envoi du mail. Veuillez recommencer ultérieurement ". $mail->ErrorInfo."</div></div>");     // TEXT ERROR   //Teste le return code de la fonction
        }
        else{    
       exit(ALERT_SUCCESS."Le mail a bien été envoyé à ".$nom_destinatire." </div></div>");
        }
        $mail->SmtpClose();
    }
    Je n'ai aucune idée d'ou peux venir cette erreur, il n'y a aucune trace d'erreur dans les logs. Quelqu'un a déjà rencontrer ca ? En pièce jointe voici le mail tel que je le reçois (à renommer en .eml), corrompu

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Bonjour, tu mets
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $mail->IsMail();
    $mail->IsSMTP(true);
    C'est l'un ou l'autre, non ?

    Si tu utilises SMTP, regarde cet exemple : http://phpmailer.worxware.com/index.php?pg=exampleasmtp

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 100
    Par défaut
    Merci pour ta réponse.

    oui, je dois utiliser le SMTP. J'ai essayé de virer le

    mais ca ne change rien. Et je ne peux pas accèder au site http://phpmailer.worxware, il est bloqué par le pare-feu du boulot...

  4. #4
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Alors je te mets le contenu de l'example :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    require_once('../class.phpmailer.php');
    //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
     
    $mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
     
    $mail->IsSMTP(); // telling the class to use SMTP
     
    try {
      $mail->Host       = "mail.yourdomain.com"; // SMTP server
      $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
      $mail->SMTPAuth   = true;                  // enable SMTP authentication
      $mail->Host       = "mail.yourdomain.com"; // sets the SMTP server
      $mail->Port       = 26;                    // set the SMTP port for the GMAIL server
      $mail->Username   = "yourname@yourdomain"; // SMTP account username
      $mail->Password   = "yourpassword";        // SMTP account password
      $mail->AddReplyTo('name@yourdomain.com', 'First Last');
      $mail->AddAddress('whoto@otherdomain.com', 'John Doe');
      $mail->SetFrom('name@yourdomain.com', 'First Last');
      $mail->AddReplyTo('name@yourdomain.com', 'First Last');
      $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
      $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
      $mail->MsgHTML(file_get_contents('contents.html'));
      $mail->AddAttachment('images/phpmailer.gif');      // attachment
      $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
      $mail->Send();
      echo "Message Sent OK<p></p>\n";
    } catch (phpmailerException $e) {
      echo $e->errorMessage(); //Pretty error messages from PHPMailer
    } catch (Exception $e) {
      echo $e->getMessage(); //Boring error messages from anything else!
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 100
    Par défaut
    Cool, merci.. Mais c'est toujours pareil. Aucune erreur SMTP à priori

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SMTP -> FROM SERVER: 220 mail.test.fr ESMTP Postfix (Debian/GNU) SMTP -> FROM SERVER: 250-mail.test.fr 250-PIPELINING 250-SIZE 10240000 250-ETRN 250-STARTTLS 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN SMTP -> FROM SERVER: 250 0.0.0 Ok SMTP -> FROM SERVER: 250 0.0.5 Ok SMTP -> FROM SERVER: 354 End data with . SMTP -> FROM SERVER: 250 0.0.0 Ok: queued as 6642327032C SMTP -> FROM SERVER: 221 2.0.0 Bye Message Sent OK
    Quand je fais mes essais en local, j'utilise les mêmes paramètres et tout roule. Je me demande si ca vient pas de ma conf PHP..

  6. #6
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Et ça ne pourrait pas être une histoire d'Anti-virus qui te corromprait le fichier ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. CDO message et pièce jointe corrompue
    Par Ced_Del dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/03/2012, 18h11
  2. [PHPMailer] Pièces jointes
    Par Riri80 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 23/04/2010, 14h54
  3. [PHPMailer] Pièce jointe trop volumineuse
    Par Bioteck dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 13/01/2010, 18h54
  4. [PhpMailer]Pièces jointes n'apparaissant pas.
    Par johweb dans le forum Langage
    Réponses: 1
    Dernier message: 01/04/2009, 18h47
  5. [PHPMailer] Pièce jointe en local
    Par meda dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 28/10/2005, 19h06

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