Hello,
Je cherche à envoyer des mails avec l'API de Mailjet mais je ne reçoit aucun mail dans ma boite de messagerie.
Quesque j'ai fait encore fait de travers ?
Le var_dump() m'affiche ceci :

array(1) { ["Messages"]=> array(1) { [0]=> array(5) { ["Status"]=> string(7) "success" ["CustomID"]=> string(0) "" ["To"]=> array(1) { [0]=> array(4) { ["Email"]=> string(20) "contact@mon_email.com" ["MessageUUID"]=> string(36) "b25b8efc-4a5d-4906-b800-edfeb21123ab" ["MessageID"]=> string(18) "576460771224313838" ["MessageHref"]=> string(58) "https://api.mailjet.com/v3/REST/message/576460771224313838" } } ["Cc"]=> array(0) { } ["Bcc"]=> array(0) { } } } }

Mon code :

<?php

require 'vendor/autoload.php';
use \Mailjet\Resources;

$mj = new \Mailjet\Client('*********************','****************',true,['version' => 'v3.1']);

$name = "mon_nom";
$email_address = "contact@mon_email.com";
$phone = "0600000000";
$message = "Message Test";

$body = [
    'Messages' => [
        [
            'From' => [
                'Email' => "$email_address",
                'Name' => "$name"
            ],
            'To' => [
                [
                    'Email' => "$email_address",
                    'Name' => "$name"
                ]
            ],
            'Subject' => "Nom : $name",
            'TextPart' => "Contactez-nous",
            'HTMLPart' => "<h3>Message de $name</h3><br/>
            <p>Nom : $name</p><br/>
            <p>Email : $email_address</p><br/>
            <p>Téléphone : $phone</p><br/>
            <p>Message : <br/>
            $message
            "
        ]
    ]
];
$response = $mj->post(Resources::$Email, ['body' => $body]);
$response->success() && var_dump($response->getData());
//var_dump($response->getData());
$response->success();
//echo "email envoyé avec succès";

La documentation se trouve ici :

9 réponses


Question, est ce pour une newsletter ou pour simplement envoyé un mail (mail par mail)?

Matth72
Auteur

Mail par mail, pour remplacer la fonction mail().

Utilises plutot une librairy comme PHPMailer et utilise l'authentification smtp proposer pour mailjet.
Ton code, que j'ai pas testé est plus pour un envoi de mail massif, en gros une newsletter. Je l'utilise d'ailleurs sur un de mes gros projets.

J'espère que tu y arriveras, sinon, je pourrais t'aider, si tu le souhaites.

Hello,

Si ton application a pour vocation de n'envoyer que des mails, la réponse de @leknoppix est ok.
Tu as juste besoin d'utiliser les identifiants SMTP fournis par Mailjet et utiliser la fonction mail() native de PHP pour les envoyer au travers de mailjet.

L'API peut être utile dans les cas où tu souhaites faire du spécifique Mailjet (récupération de listes de diffusion, historique des envois, statut des emails etc) mais si ça ne concerne que l'envoi, SMTP suffira !

J'ai peur de dire une bétise, mais même en passant par le smtp de mailjet, tu as l'historique des envois dans l'interface mailjet

Matth72
Auteur

Merci pour vos réponses.
En effet, je souhaite envoyer les emails via l'API mailjet pour par la suite pouvoir récupérer le statut des emails.
Je ne comprend pas pourquoi ça ne fonctionne pas du tout. J'ai suivi la documentation à la lettre et suivi quelques tuto Youtube et sans succès.
Impossible d'envoi un mail avec l'API de mailjet !

Je confirme, que même en utilisant le smtp, tu as un suivi directement dans mailjet!

Teste en faisant à la fin un $response->getStatus(); .

Je trouve un peu étrange ton body, j'utilise celui ci, dans mon cas

$body = [
            'Locale' => 'fr_FR', //En fr
            'Sender' => '', //Le nom donné à l'envoyeur
            'SenderEmail' => 'r', //L'email de l'envoyeur
            'ReplyEmail' => '',
            'SenderName' => '',
            'Subject' => '!', //Titre
            'Title' => '',
        ];
Matth72
Auteur

Le $response->getStatus(); n'a rient donné.
et $body que tu utilise n'a rien donné non plus.