Download the PHP package faimmedia/mailchimp-v3-api without Composer

On this page you can find all versions of the php package faimmedia/mailchimp-v3-api. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package mailchimp-v3-api

MailChimp PHP v3 API library by FaimMedia.nl

I couldn't find a good simple PHP library for the MailChimp v3 API, so decided to created one.
Currently it has basic support for campaigns (including some actions), lists and corresponding members. No tests are included at this moment, so please create an issue for any unexpected results you might run into.

Installation

You can install this library by editing (or creating) your composer.json:

{
    "require": {
        "faimmedia/mailchimp-v3-api": "*"
    }
}

And run composer update or composer install.

Usage

There are some more examples in the example folder. All methods can be found in the section below.

All examples below require the initialization of the MailChimp class with your API key. The API key is a 32-length hash followed by your MailChimp datacenter location, separated with a minus. An API key can be obtained here: https://us14.admin.mailchimp.com/account/api/.

$apiKey = '02699f222d95d4dfc53b9f7960b2fa6e-us1';

$mailchimp = new FaimMedia\MailChimp($apiKey);

For all API end-points, required and allowed fields, please check out the MailChimp API documentation page: https://developer.mailchimp.com/documentation/mailchimp/reference/overview/.

Campaigns

Create a new campaign

$campaign = $mailchimp->campaigns()->create([
    'settings' => [
        'subject_line' => 'My newsletter',
        'from_name'    => 'My company',
        'reply_to'     => '[email protected]',
    ],
    'type'     => 'regular',
]);

Get all existing campaigns

$campaigns = $mailchimp->campaigns()->getAll();

Get campaign by id

$campaign = $mailchimp->campaigns()->getById($campaignId);
// or
$campaign = $mailchimp->campaigns($campaignId);

Campaign content

Set content of a campaign

$campaign->setContentItem([
    'html' => 'HTML content of my campaign',
    'text' => 'Text content of my campaign'
]);

Get content of a campaign

$content = $campaign->getContentItem();
echo $content->getHtml();
echo $content->getText();

Campaign actions

Send a campaign

$campaign->actions()->send();

Send test mail for campaign

$campaign->actions()->test();

Schedule a campaign

The schedule method only excepts a DateTime object as first argument.

$datetime = new \DateTime('2018-02-01 01:00:00');

$campaign->actions()->schedule($datetime);

Unschedule a campaign

$campaign->actions->unschedule();

Lists

Create a new list

$list = $mailchimp->lists()->create([
    'name'     => 'Test newsletter list',
    'contact'  => [
        'company'  => 'FaimMedia.nl',
        'address1' => 'PO Box 1540',
        'city'     => 'NIJMEGEN',
        'state'    => 'GL',
        'zip'      => '6501 BM',
        'country'  => 'NL',
    ],
    'permission_reminder' => 'You signed up for updates on our website',
    'campaign_defaults'   => [
        'from_name'    => 'FaimMedia.nl',
        'from_email'   => '[email protected]',
        'subject'      => 'Newsletter',
        'language'     => 'NL',
    ],
    'email_type_option' => false,
]);

Returns: ListItem object

Get all existing lists

$lists = $mailchimp->lists()->getAll();

Returns: Lists object

Get list by id

$list = $mailchimp->lists()->getById($listId);
// or
$list = $mailchimp->campaigns($listId);

Returns: ListItem object

List members

This class and methods can be used to subscribe or unsubscribe list members. When adding a member or updating the subscription status of an existing member, it's not being checked if the member exists. If it already exists the provided data will be overridden, if it doesn't exists the member will be created with the provided subscription status.

Add one list member (subscriber)

Subscribe can simple add one subscriber to the list, by using the add method. If you wish to subscribe multiple members to a list at once, it is recommended to use the multi method instead of the add method. The add method will make a new request for every email address, were multi can send a whole batch of email addresses at once.

$member = $list->members()->add('[email protected]');

Returns: ListMemberItem object

If you wish to include additional fields, you can specify an array as first attribute.

$member = $list->members()->add([
    'email_address' => '[email protected]',
    'merge_fields'  => [
        'FNAME' => 'John',
        'LNAME' => 'Doe',
    ],
]);

Returns: ListMemberItem object

Subscribe multiple list members

If you wish to add multiple members to a list, you can use the multi method.

$members = $list->members()->multi([
    '[email protected]',
    '[email protected]',
]);

This method also provides a way to included multiple fields, you can simple specify the email address as array key in that case:

$members = $list->members()->multi([
    '[email protected]' => [
        'merge_fields' => [
            'FNAME' => 'John',
            'LNAME' => 'Doe',
        ],
    ],
    '[email protected]' => [
        'merge_fields' => [
            'FNAME' => 'Jane',
            'LNAME' => 'Doe',
        ],
    ],
]);

Returns: ListMembers object

Get a list member

$member = $list->members()->getByEmail('[email protected]');

Returns: ListMemberItem object

Change status of a list member

This method changes the list member status and immidiatly saves it.

$member->setStatus('unsubscribed');

Returns: ListMemberItem object

Items

Getting properties

All objects returning a AbstractItem instance (CampaignItem, ListItem, ListMemberItem) can easily return the properties. All properties are accessable by calling the camelcased field prefix with get. In example, if you'd wish to get the email_address field, you could use the getEmailAddress method.

foreach($members as $member) {
    echo $member->getId();
    echo $member->getEmailAddress();
    echo $member->getMergeFields()->getFNAME();
    echo $member->getMergeFields()->getLNAME();

// or

    echo $member->id;
    echo $member->emailAddress;
    echo $member->mergeFields->FNAME;
    echo $member->mergeFields->LNAME;
}

If the value is an array, you could pass the first argument of the method to get that key of the array:

$member->getMergeFields('FNAME');

If you would like to get the property by it's snakecase key, you could use the get method.

$member->get('id');
$member->get('email_address');
$member->get('merge_fields')->get('FNAME');
$member->get('merge_fields')->get('LNAME');

To get the name of the subscriber more easily there are a few build-in methods:

$member->getFirstName();
// alias of $member->getMergeFields()->getFNAME();

$member->getLastName();
// alias of $member->getMergeFields()->getLNAME();

Get all properties

Use the toArray method, to get an array of all properties.

$campaign->toArray();
$member->toArray();
$list->toArray();

Delete an item

You can delete items by using the delete method. This method returns true on success or throws an Exception on failure. Campaigns that are on sending status can not be deleted. Also lists that are linked to a campaign can't be deleted, in that case you need to delete the campaign first.

$list->delete();

$campaign->delete();

Subscribe members can be deleted, however it's not recommended according to the MailChimp API documentation. It's better to update the current member and change it's status to unsubscribed.

$member->delete();

// better to unsubscribe

$member->setStatus('unsubscribed');

Update items

First get the item you would like to update:

// campaigns
$campaign = $mailchimp->campaigns()->getById();

// lists
$list = $mailchimp->lists()->getById('ag43fe');

// members
$list->members()->getByEmail('[email protected]');

Update the fields that need changes. If you use the overloading property ($campaign->type = 'html'), it expects a camelized field, were the set method expects the regular snakecased fields.

// campaigns
    $campaign->type = 'plaintext';
    // or
    $campaign->set('type', 'plaintext');
    // or
    $campaign->set([
        'settings' => [
            'subject_line' => 'New subject line',
            'title'        => 'Updated campaign title',
        ]
    ]);

// lists
    $list->name = 'Updated list name';
    // or
    $list->set('name', 'Updated list name');
    // or
    $list->set([
        'name'       => 'Updated list name',
        'visibility' => 'prv',
    ]);

// members
    $member->status = 'cleaned';
    // or
    $member->set('status', 'cleaned');
    // or
    $member->set([
        'status'       => 'cleaned',
        'merge_fields' => [
            'FNAME' => 'Test',
        ],
    ]);

Please note that modifing multi-dimensional properties this way will not work, in example:

$campaign->settings->subjectLine = 'Updated campaign title';

You'll need to provide an array to the first property:

$campaign->settings = [
    'subject_line' => 'Updated campaign subject line',
];

The new array will be merged with the old one, to if you ommit a certain field (in this case, in example, the title field) the original title will be kept.

If you don't want this behaviour you could pass an extra argument to the set method. This way the array would not be merged, but overwritten:

$campaign->set('settings', [
    'subject_line' => 'Updated campaign subject line',
], false);

Save the item:

$campaign->save();

$list->save();

$member->save();

Methods

Will be provided soon...
See all examples for now, they included most methods.

Exceptions

All exceptions are extended from MailChimpException.

ItemException

Throw when an item could not be found.

SaveException

Thrown when there was an error saving the item.

RequestException

Thrown when there was a problem with the MailChimp API request, could be when the request itselfs fails or when the MailChimp API returns an unexpected response.


All versions of mailchimp-v3-api with dependencies

PHP Build Version
Package Version
Requires php Version >=5.6
ext-curl Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package faimmedia/mailchimp-v3-api contains the following files

Loading the files please wait ....