2017 © Pedro Peláez
 

library mailjet

Mailjet driver for Laravel

image

prspace/mailjet

Mailjet driver for Laravel

  • Tuesday, December 27, 2016
  • by prspace
  • Repository
  • 0 Watchers
  • 2 Stars
  • 304 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

Laravel 4 Mailjet Integration

  • Laravel: 4
  • Author: Parvez Rahaman
  • Author Homepage: https://github.com/prspace

This package extends the Laravel 4 MailService to enable Mailjet integration, based on Mailjet API v3., (*1)

Installation

Firstly you want to include this package in your composer.json file., (*2)

"require": {
    "prspace/mailjet" : "1.0.*"
}

Now you'll want to update or install via composer., (*3)

composer update

Next you open up app/config/app.php and replace the MailServiceProvider with, (*4)

'Prspace\Mailjet\MailjetServiceProvider'

NOTE It is very important that you replace the default service providers to avoid conflicts. You don't lose any original functionality regarding mail drivers, they are still available., (*5)

Configuration is pretty easy: add the following entry to your config/services.php:, (*6)

'mailjet' => [
    'key' => 'APIKEY',
    'secret' => 'APISECRET',
],

And replace the values with your respective api key and secret key., (*7)

Next, change the mail driver in your config/mail.php or your .env file to 'mailjet', and make sure you have a valid and authorised from-address configured., (*8)

That's all and you're good to go. For usage, check the Laravel 4 mail documentation, (*9)

API access

I have also integrated direct access to Mailtjet's API, based on their example code., (*10)

To install, append the aliases in config/app.php with, (*11)

'Mailjet'   => 'Prspace\Mailjet\Facades\Mailjet',

Examples

Based on https://github.com/mailjet/mailjet-apiv3-php-simple/blob/master/README.md, (*12)

SendAPI

  • A function to send an email :
function sendEmail() {
    $params = [
        "method" => "POST",
        "from" => "ms.mailjet@example.com",
        "to" => "mr.mailjet@example.com",
        "subject" => "Hello World!",
        "text" => "Greetings from Mailjet."
    ];

    $result = Mailjet::sendEmail($params);

    if (Mailjet::getResponseCode() == 200)
       echo "success - email sent";
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}
  • A function to send an email with some attachments (absolute paths on your computer) :
function sendEmailWithAttachments() {
    $params = [
        "method" => "POST",
        "from" => "ms.mailjet@example.com",
        "to" => "mr.mailjet@example.com",
        "subject" => "Hello World!",
        "text" => "Greetings from Mailjet.",
        "attachment" => ["@/path/to/first/file.txt", "@/path/to/second/file.txt"]
    ];

    $result = Mailjet::sendEmail($params);

    if (Mailjet::getResponseCode() == 200)
       echo "success - email sent";
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}
  • A function to send an email with some inline attachments (absolute paths on your computer) :
function sendEmailWithInlineAttachments() {

    $params = [
        "method" => "POST",
        "from" => "ms.mailjet@example.com",
        "to" => "mr.mailjet@example.com",
        "subject" => "Hello World!",
        "html" => "<html>Greetings from Mailjet <img src=\"cid:photo1.jpg\"><img src=\"cid:photo2.jpg\"></html>",
    "inlineattachment" => ["@/path/to/photo1.jpg", "@/path/to/photo2.jpg"]
    ];

    $result = Mailjet::sendEmail($params);

    if (Mailjet::getResponseCode() == 200)
       echo "success - email sent";
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}

Account Settings

  • A function to get your profile information :
function viewProfileInfo() {

    $result = Mailjet::myprofile();

    if (Mailjet::getResponseCode() == 200)
       echo "success - got profile information";
    else
       echo "error - ".Mailjet::getResponseCode();
}
  • A function to update the field AddressCity of your profile :
function updateProfileInfo() {

    $params = [
        "method" => "PUT",
        "AddressCity" => "New York"
    ];

    $result = Mailjet::myprofile($params);

    if (Mailjet::getResponseCode() == 200)
       echo "success - field AddressCity changed";
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}

Contact Lists

  • A function to print the list of your contacts :
function listContacts()
{

    $result = Mailjet::contact();

    if (Mailjet::getResponseCode() == 200)
       echo "success - listed contacts";
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}
  • A function to update your contactData resource with ID $id, using arrays :
function updateContactData($id) {

    $data = [
        ['Name' => 'lastname', 'Value' => 'Jet'], 
        ['Name' => 'firstname', 'Value' => 'Mail']
    ];
    $params = [
        'ID' => $id,
        'Data' => $data,
        'method' => 'PUT'
    ];

    $result = Mailjet::contactdata($params);

    if (Mailjet::getResponseCode() == 200)
       echo "success - data changed";
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}
  • A function to create a list with name $Lname :
function createList($Lname) {

    $params = [
        "method" => "POST",
        "Name" => $Lname
    ];

    $result = Mailjet::contactslist($params);

    if (Mailjet::getResponseCode() == 201)
       echo "success - created list ".$Lname;
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}
  • A function to get a list with ID $listID :
function getList($listID) {

    $params = [
        "method" => "VIEW",
        "ID" => $listID
    ];

    $result = Mailjet::contactslist($params);

    if (Mailjet::getResponseCode() == 200)
       echo "success - got list ".$listID;
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}

Note : You can use unique fields of resources instead of IDs, like "unique" => "test@gmail.com" in your params array for this example, (*13)

  • A function to create a contact with email $Cemail :
function createContact($Cemail) {

    $params = [
        "method" => "POST",
        "Email" => $Cemail
    ];

    $result = Mailjet::contact($params);

    if (Mailjet::getResponseCode() == 201)
       echo "success - created contact ".$Cname;
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}
  • A function to add the contact which ID is $contactID to the list which ID is $listID :
function addContactToList($contactID, $listID) {

    $params = [
        "method" => "POST",
        "ContactID" => $contactID,
        "ListID" => $listID,
        "IsActive" => "True"
    ];

    $result = Mailjet::listrecipient($params);

    if (Mailjet::getResponseCode() == 201)
       echo "success - contact ".$contactID." added to the list ".$listID;
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}
  • A function to delete the list which ID is $listID :
function deleteList($listID) {

    $params = [
        "method" => "DELETE",
        "ID" => $listID
    ];

    $result = Mailjet::contactslist($params);

    if (Mailjet::getResponseCode() == 204)
       echo "success - deleted list";
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}
  • A function to get unsubscribed contact(s) from a list with ID $listID :
function getUnsubscribedContactsFromList($listID) {


    $params = [
        "method" => "GET",
        "ContactsList" => $listID,
        "Unsub" => true
    ];

    $result = Mailjet::listrecipient($params);

    if (Mailjet::getResponseCode() == 200)
       echo "success - got unsubscribed contact(s) ";
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;   
}
  • A function to get a contact with ID $contactID :
function getContact($contactID) {

    $params = [
        "method" => "VIEW",
        "ID" => $contactID
    ];

    $result = Mailjet::contact($params);

    if (Mailjet::getResponseCode() == 200)
       echo "success - got contact ".$contactID;
    else
       echo "error - ".Mailjet::getResponseCode();

    return $result;
}

Note : You can use unique fields of resources instead of IDs, like "unique" => "test@gmail.com" in your params array for this example, (*14)

Newsletters

You can use the DetailContent action to manage the content of a newsletter, in Text and Html. It has two properties : Text-part and Html-part. You can use GET, POST, PUT and DELETE both requests on this action : * GET : you get the Text-part and Html-part properties of a newsletter * POST : update the content of Text-part and Html-part. If you specify only one, the other will be emptied * PUT : update the content of Text-part and Html-part. You can specify only one, it will not empty the other one * DELETE : update the content of Text-part and Html-part and put both to empty., (*15)

Example with a GET on DetailContent :, (*16)

function getNewsletterDetailcontent($newsletter_id) {
    $params = [
        "method" => "GET",
        "ID" => $newsletter_id
    ];

    $result = Mailjet::newsletterDetailContent($params);

    if (Mailjet::getResponseCode() == 200)
        echo "success - got content for the newsletter ". $newsletter_id;
    else
        echo "error - ".Mailjet::getResponseCode();

    return $result;
}

Use the schedule action to send a newsletter later. You just need to perform a POST request to schedule a new sending and to fill the date property with a Timestamp format in ISO 8601 : http://www.iso.org/iso/home/standards/iso8601.htm You can also DELETE a schedule Here is an example :, (*17)

function scheduleNewsletter($newsletter_id) {
    $params = [
        "method" => "POST",
        "ID" => $newsletter_id,
        "date" => "2014-11-25T10:12:59Z"
    );

    $result = Mailjet::newsletterSchedule($params);

    if (Mailjet::getResponseCode() == 201)
        echo "success - schedule done for the newsletter ". $newsletter_id;
    else
        echo "error - ".Mailjet::getResponseCode();

    return $result;
}

To send a newsletter immediately, you have two possibilities : * POST a new schedule with a Timestamp which value is NOW * use send (only POST is supported) For the second case, here is an example :, (*18)

function sendNewsletter($newsletter_id) {

    $params = [
        "method" => "POST",
        "ID" => $newsletter_id
    ];

    $result = Mailjet::newsletterSend($params);

    if (Mailjet::getResponseCode() == 201)
        echo "success - newsletter ". $newsletter_id . " has been sent";
    else
        echo "error - ".Mailjet::getResponseCode();

    return $result;
}

You can also test a newsletter by sending it to some specified recipients before making the real sending. To do so, you have to perform a POST request on a newsletter with action test like in the following example :, (*19)

function testNewsletter($newsletter_id) {

    $recipients = [
        ['Email' => 'mailjet@example.org', 'Name' => 'Mailjet']
    ];
    $params = [
        "method" => "POST",
        "ID" => $newsletter_id,
        "Recipients" => $recipients
    ];

    $result = Mailjet::newsletterTest($params);

    if (Mailjet::getResponseCode() == 201)
        echo "success - newsletter ". $newsletter_id . " has been sent";
    else
        echo "error - ".Mailjet::getResponseCode();

    return $result;
}

The Versions

27/12 2016

dev-master

9999999-dev

Mailjet driver for Laravel

  Sources   Download

MIT

The Requires

 

by Parvez Rahaman

laravel api v3 mailjet

20/11 2015

v1.0

1.0.0.0

Mailjet driver for Laravel 4

  Sources   Download

MIT

The Requires

 

by Parvez Rahaman

laravel api laravel 4 v3 mailjet

20/11 2015

v1.0.1

1.0.1.0

Mailjet driver for Laravel 4

  Sources   Download

MIT

The Requires

 

by Parvez Rahaman

laravel api laravel 4 v3 mailjet