mailjet / mailjet-apiv3-php-simple

[API v3] Simple PHP wrapper for the Mailjet API /!\ [DEPRECATED - SEE README] /!\
https://dev.mailjet.com
MIT License
55 stars 45 forks source link

Statistiques d'erreurs #101

Closed Romano83 closed 9 years ago

Romano83 commented 9 years ago

Bonjour, cela fait quelques jours que j'essaie de récupérer les erreurs de délivrabilité des mails sans succès. Je cherche à récupérer les erreurs et leurs messages respectifs mais je n'ai rien en retour. Dans un premier temps, j'ai essayé de récupéré le paramètre BounceReason avec le bout de code ci-dessous (il s'agit d'une partie d'une fonction):

$params = array(      
    "method"  => 'GET',     
    "AllMessages" => true,
    "ShowExtraData" => true,
    "MessageStatus" => 'Bounce',
    "Limit" => $limit,
    "CampaignID" => $campaignID
);
$response = $mj->messagesentstatistics($params);
$bounces = $response->Data;

Malheureusement, je ne récupère pas cette information malgré le paramètre ShowExtraDataà truecomme indiqué dans la doc. Par ailleurs, j'ai essayé d'utilisé la méthode bouncestatistics en lui appliquant un filtre sur CampaignID afin de récupérer les paramètres IsBlocked et IsStatePermanent mais cette méthode me retoune un tableau vide...

Une idée ?

arnaudbreton commented 9 years ago

Bonjour @Romano83,

Merci de nous avoir contacté.

Concernant messagesentstatistics, le filtre MessageStatus doit être positionné à la valeur numérique du status (5 dans votre cas pour bounce).

Pour bouncestatistics, pouvez-vous svp confirmer que l'ID de Campagne est correct via une requête GET sur /campaign avec ce même ID ? Aussi, pouvez-vous svp nous montrer un extrait de code ?

Merci d'avance, Arnaud.

Romano83 commented 9 years ago

Bonjour @arnaudbreton,

Je viens de tester votre solution pour messagesentstatistics avec le filtre MessageStatus sur 5 mais j'ai le même résultat que précédemment.

Voici ce que j'utilise pour récupérer les différentes infos de ma campagne :

    // Je récupére l'ID de la newsletter en bdd après l'envoi de celle-ci
        $id = $this->_getParam('id', 0);
        $customvalue = "mj.nl=".$id;
        $mj = new Mailjet();
        $params = array('method' => 'VIEW', 'unique' => $customvalue);
        $response = $mj->campaign($params);
        $campaigns = $response->Data[0];
        $count = $response->Count;
        $campaign_id = $campaigns->ID;
        $status = $campaigns->Status;
        $this->view->status = $status;
        $params = array('method' => 'GET', 'CampaignID' => $campaign_id);
        $response = $mj->messagestatistics($params);
        $statistics = $response->Data[0];
        $this->view->statistics = $statistics;  
        $model = new Application_Model_Emailing();
        $params = array("method" => "GET","CampaignID" => $campaign_id);
        $bounces = $model->EmailBounce($mj, $params);

// Et la fonction EmailBounce
public function EmailBounce($mj, $params = array()){
        $limit = 100;
        $defaultsParams = array(            
            "AllMessages" => true,
            "ShowExtraData" => true,
            "MessageStatus" => 5,
            "Limit" => $limit,
        );
        $params = array_merge($params, $defaultsParams);
        $response = $mj->messagesentstatistics($params);
        $bounces = $response->Data;
        return $bounces;
    }

Voici ce que me retourne la méthode /campaign

stdClass Object
(
    [Count] => 1
    [Data] => Array
        (
            [0] => stdClass Object
                (
                    [CampaignType] => 2
                    [ClickTracked] => 3
                    [CreatedAt] => 2015-06-30T13:15:30Z
                    [CustomValue] => mj.nl=3392440
                    [FirstMessageID] => 2.1110623319149E+16
                    [FromEmail] => xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                    [FromID] => 1
                    [FromName] => 
                    [HasHtmlCount] => 3
                    [HasTxtCount] => 3
                    [ID] => 4617768139
                    [IsDeleted] => 
                    [IsStarred] => 
                    [ListID] => 1436702
                    [NewsLetterID] => 3392440
                    [OpenTracked] => 3
                    [SendEndAt] => 2015-06-30T13:15:30Z
                    [SendStartAt] => 2015-06-30T13:15:30Z
                    [SpamassScore] => 0
                    [Status] => 0
                    [Subject] => test statistiques mailjet 5
                    [UnsubscribeTrackedCount] => 0
                )

        )

    [Total] => 1
)

Et la méthode messagesentstatistics :

stdClass Object
(
    [Count] => 1
    [Data] => Array
        (
            [0] => stdClass Object
                (
                    [ArrivalTs] => 2015-06-30T13:15:30Z
                    [Blocked] => 
                    [Bounce] => 1
                    [BounceDate] => 
                    [BounceReason] => 
                    [CampaignID] => 4617768139
                    [Click] => 
                    [CntRecipients] => 1
                    [ComplaintDate] => 
                    [ContactID] => 1475345445
                    [Details] => 
                    [FBLSource] => 
                    [MessageID] => 2.1110623319149E+16
                    [Open] => 
                    [Queued] => 
                    [Sent] => 1
                    [Spam] => 
                    [StatePermanent] => 
                    [Status] => bounce
                    [ToEmail] => xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                    [Unsub] => 
                )

        )

    [Total] => 1
)
arnaudbreton commented 9 years ago

Bonjour @Romano83, merci pour vos retours.

D'après ceux-ci vous obtenez bien un message pour votre campagne. Vous attendez-vous à un résultat différent?

Romano83 commented 9 years ago

Bonjour @arnaudbreton, effectivement, j'obtiens bien un résultat mais je pensais récupérer les propriétés BounceReason, BounceDate et StateID comme indiqué dans la doc... surtout avec le filtre ShowExtraData à 1. Je trouve qu'il est plus difficile (et peut être moins bien expliqué) de récupérer les erreurs qu'avec la version 1 de l'API... Avec la méthode reportEmailBounce, on retrouvait toutes ces infos.

Par ailleurs, pouvez-vous m'éclairer sur les raisons d'un tableau vide lorsque j'utilise la méthode bouncestatistics? Voici ce que je fais :

// C'est la suite du code précédemment montré
$params = array(
    'method' => 'GET',
    'CampaignID' => $campaign_id,
);
$bounces2 = $mj->bouncestatistics($params);

et voici ce que j'obtiens :

stdClass Object
(
    [Count] => 0
    [Data] => Array
        (
        )

    [Total] => 0
)

Pourtant (à part si je ne comprends pas comment fonctionne cette méthode), je devrais bien obtenir quelque chose vu que j'ai au moins un mail qui à le statut Bounce ?

arnaudbreton commented 9 years ago

@Romano83, votre utilisation de l'API semble correcte. Afin de pouvoir vous fournir une aide plus avancée, pourriez vous svp ouvrir un ticket via notre support en mentionnant cette issue Github ?

Merci de votre compréhension, Arnaud.

Romano83 commented 9 years ago

Bonjour @arnaudbreton un ticket est déjà ouvert sur votre support. Il s'agit du numéro 327124. Merci pour votre aide, Romain

arnaudbreton commented 9 years ago

Merci de votre retour @Romano83, je vous invite à continuer la discussion sur ce ticket.