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

Autres composants PHP Discussion :

Zend_Mail : appendMessage retourne une erreur


Sujet :

Autres composants PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut [Zend_Mail] appendMessage retourne une erreur
    Bonjour,

    Après quelques semaines de manipulation de Zend_Mail, je rencontre un problème, a priori, insoluble puisque mes nombreuses questions à Google ne me retournent strictement rien.

    Mon soucis est lié à l'utilisation de la fonction appendMessage que je vous présente là :
    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
        /**
         * append a new message to mail storage
         *
         * @param  string                                     $message message as string or instance of message class
         * @param  null|string|Zend_Mail_Storage_Folder       $folder  folder for new message, else current folder is taken
         * @param  null|array                                 $flags   set flags for new message, else a default set is used
         * @throws Zend_Mail_Storage_Exception
         */
         // not yet * @param string|Zend_Mail_Message|Zend_Mime_Message $message message as string or instance of message class
        public function appendMessage($message, $folder = null, $flags = null)
        {
            if ($folder === null) {
                $folder = $this->_currentFolder;
            }
     
            if ($flags === null) {
                $flags = array(Zend_Mail_Storage::FLAG_SEEN);
            }
     
            // TODO: handle class instances for $message
            if (!$this->_protocol->append($folder, $message, $flags)) {
                /**
                 * @see Zend_Mail_Storage_Exception
                 */
                require_once 'Zend/Mail/Storage/Exception.php';
                throw new Zend_Mail_Storage_Exception('cannot create message, please check if the folder exists and your flags');
            }
        }

    Je souhaite l'utiliser pour enregistrer un mail dans le dossier "brouillon" sur mon stockage distant IMAP. J'utilise donc le script suivant pour mes tests :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        $mailAuth = new Mail_Model_Auth_Imap();
        $mailSave = $mailAuth->init('INBOX.Drafts');
        $mailSave->appendMessage('test', $mailSave->getCurrentFolder(), array(Zend_Mail_Storage::FLAG_SEEN));

    Malheureusement, il me renvoie une erreur alors que le dossier et le flag sont corrects.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    cannot create message, please check if the folder exists and your flags
    #0 /home/****/trunk/application/mail/controllers/WriteController.php(58): Zend_Mail_Storage_Imap->appendMessage('test', 'INBOX', Array)
    #1 /home/****/trunk/library/Zend/Controller/Action.php(513): Mail_WriteController->indexAction()
    #2 /home/****/trunk/library/Zend/Controller/Dispatcher/Standard.php(289): Zend_Controller_Action->dispatch('indexAction')
    #3 /home/****/trunk/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
    #4 /home/****/trunk/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
    #5 /home/****/trunk/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
    #6 /home/****/trunk/www/index.php(13): Zend_Application->run()
    #7 {main}
    Je vous remercie par avance pour votre aide,
    Amicalement, Jean-Remy.

  2. #2
    Membre actif
    Inscrit en
    Avril 2003
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2003
    Messages : 121
    Par défaut
    question bête :

    si à la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $mailSave->appendMessage('test', $mailSave->getCurrentFolder(), array(Zend_Mail_Storage::FLAG_SEEN));
    tu écris en dur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $mailSave->appendMessage('test', 'INBOX.draft', array(Zend_Mail_Storage::FLAG_SEEN));
    ça donne quoi ?

    car si tu regardes la trace, le problème semble être sur 'INBOX' qui n'existe pas

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut
    Bonsoir,

    L'erreur est identique que ce soit :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        $mailAuth = new Mail_Model_Auth_Imap();
        $mailSave = $mailAuth->init('INBOX.Drafts');
        $mailSave->appendMessage('test', $mailSave->getCurrentFolder(), array(Zend_Mail_Storage::FLAG_SEEN));

    Ou bien :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        $mailAuth = new Mail_Model_Auth_Imap();
        $mailSave = $mailAuth->init('INBOX.Drafts');
        $mailSave->appendMessage('test', 'INBOX.Drafts', array(Zend_Mail_Storage::FLAG_SEEN));

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    cannot create message, please check if the folder exists and your flags
    #0 /home/****/trunk/application/mail/controllers/WriteController.php(58): Zend_Mail_Storage_Imap->appendMessage('test', 'INBOX.Drafts', Array)
    #1 /home/****/trunk/library/Zend/Controller/Action.php(513): Mail_WriteController->indexAction()
    #2 /home/****/trunk/library/Zend/Controller/Dispatcher/Standard.php(289): Zend_Controller_Action->dispatch('indexAction')
    #3 /home/****/trunk/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
    #4 /home/****/trunk/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
    #5 /home/****/trunk/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
    #6 /home/****/trunk/www/index.php(13): Zend_Application->run()
    #7 {main}
    Merci de cette proposition,
    Amicalement, Jean-Remy.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    Bonjour,

    As-tu essayé un simple ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    file_put_contents('INBOX/Drafts/test.txt', 'test');
    Pour voir si effectivement à l'endroit où le code est exécuter on trouve bien le dossier et si les droits sont corrects

    devyan

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut
    Bonjour,

    Je ne perçois pas le lien entre ta proposition et mon problème. Le stockage des mails est distant, je n'ai donc aucun dossier "INBOX/Drafts/" sur mon serveur. Par ailleurs, ce dossier existe bien puisque c'est un dossier par défaut et puisque Zend_Mail me l'intègre dans les dossiers du serveur IMAP.

    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
    		$mailAuth = new Mail_Model_Auth_Imap();
    		$mail = $mailAuth->init();
    		$folders = new RecursiveIteratorIterator(
    		                  $mail->getFolders(),
    		                  RecursiveIteratorIterator::SELF_FIRST);
     
    		$i = 0;
    		foreach ($folders as $localName => $folder) {
    			$localName = str_pad('', $folders->getDepth(), '-', STR_PAD_LEFT)
    			. $localName;
    			$tree[$i] = array('folder' => htmlspecialchars($folder), 'localname' => $localName);
    			$i++;
    		}
     
    		$this->view->tree = $tree;
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    Array
    (
        [0] => Array
            (
                [folder] => INBOX
                [localname] => INBOX
            )
     
        [1] => Array
            (
                [folder] => INBOX.Archive
                [localname] => -Archive
            )
     
        [2] => Array
            (
                [folder] => INBOX.Archive.Accounts
                [localname] => --Accounts
            )
     
        [3] => Array
            (
                [folder] => INBOX.Archive.Bills
                [localname] => --Bills
            )
     
        [4] => Array
            (
                [folder] => INBOX.Archive.Mailinglists
                [localname] => --Mailinglists
            )
     
        [5] => Array
            (
                [folder] => INBOX.Archive.Newsletters
                [localname] => --Newsletters
            )
     
        [6] => Array
            (
                [folder] => INBOX.Archive.Other
                [localname] => --Other
            )
     
        [7] => Array
            (
                [folder] => INBOX.Drafts
                [localname] => -Drafts
            )
     
        [8] => Array
            (
                [folder] => INBOX.Junk
                [localname] => -Junk
            )
     
        [9] => Array
            (
                [folder] => INBOX.Sent
                [localname] => -Sent
            )
     
        [10] => Array
            (
                [folder] => INBOX.Spam
                [localname] => -Spam
            )
     
        [11] => Array
            (
                [folder] => INBOX.Trash
                [localname] => -Trash
            )
     
    )
    Merci de cette proposition,
    Amicalement, Jean-Remy.

  6. #6
    Membre actif
    Inscrit en
    Avril 2003
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2003
    Messages : 121
    Par défaut
    autre question bête :
    là tu te connectes en passant par ZF.
    Si tu essaies de faire la "même opération" que ton script en utilisant un logiciel de messagerie ou même en configurant ce compte imap sur un iphone ou autre, est-ce que ça passe?

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut
    Bonjour,

    Excusez-moi pour ce retard de réponse. Effectivement, la connexion IMAP, que ce soit sur la webmail de l'hébergeur ou bien sur mes logiciels de messagerie, me permet bien la création de messages.

    C'est donc un problème propre au Framework. Peut-être n'est-elle pas encore implantée car je peux lire ceci dans la documentation :

    Citation Envoyé par http://framework.zend.com/manual/fr/zend.mail.read.html
    IMAP :
    • Type de stockage : distant
    • Extraction des messages : Oui
    • Extraction des parties mimes : émulé
    • Dossiers : Oui
    • Créer des messages/dossiers : A faire
    • Flags : Oui
    • Quota : Non
    Mais je tiens à noter que la création de dossier est quant à elle possible.

    Merci de cette proposition,
    Amicalement, Jean-Remy.

Discussions similaires

  1. shell retourne une erreur
    Par nymus7 dans le forum Langage
    Réponses: 3
    Dernier message: 07/08/2008, 18h03
  2. [MySQL] requete qui retourne une erreur a l'execution
    Par naazih dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/05/2008, 12h59
  3. Requete SQL qui retourne une erreur
    Par gregal dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/03/2008, 23h05
  4. Réponses: 8
    Dernier message: 05/02/2008, 11h35
  5. [MSSQL 2005] Retourner une erreure dans une SP
    Par Danny Blue dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/08/2006, 08h19

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