The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Net::Mailboxlayer - Implements mailboxlayer.com's REST API, which a simple REST API measuring email deliverability and quality.

SYNOPSIS

 use Net::Mailboxlayer;

 my $mailboxlayer = Net::Mailboxlayer->new(access_key => 'YOUR_ACCESS_KEY', email_address => 'support@apilayer.com');
 my $result = $mailboxlayer->check;

 $result->email;        # support@apilayer.com
 $result->did_you_mean; # ""
 $result->user;         # support
 $result->domain;       # apilayer.net
 $result->format_valid; # 1
 $result->mx_found;     # 1
 $result->smtp_check;   # 1
 $result->catch_all;    # undef
 $result->role;         # 1
 $result->disposable;   # 0
 $result->free;         # 0
 $result->score;        # 0.8

See Net::Mailboxlayer::Response for more details.

DESCRIPTION

This module is a simple wrapper for mailboxlayer.com's REST API.

USAGE

new

Creates a new Net::Mailboxlayer object. Minimum required options are access_key and email_address, which must be set before check is called.

 my $mailboxlayer = Net::Mailboxlayer->new(access_key => 'YOUR_ACCESS_KEY', email_address => 'support@apilayer.com');
  • access_key (required)

    See also method access_key. You can get an API KEY from https://mailboxlayer.com when you created an account.

  • email_address (required)

    See also method email_address. This is the email address you want to measure.

  • endpoint (optional)

    See also method endpoint. The endpoint of the api call. Defaults to https://apilayer.net/api/check.

  • smtp (optional)

    See also method smtp. Defaults to 1 (enabled).

    Enables the MX-Records and SMTP checks.

    Reasons to turn off SMTP Check:

    The mailboxlayer SMTP Check feature takes up around 75% of the API's entire response time. If you would like to skip SMTP and speed up the API response, you may turn it off by setting the API's smtp parameter to 0.

  • format (optional)

    See also method format. Defaults to 0 (disabled).

    Causes the response from the api to be prettified. Use this only for debugging.

  • callback (optional)

    See also method callback. Sets your preferred JSONP callback function. See the official docs for more information.

    Provided for completeness and who knows, you might have some use for it! Let me know if you do.

  • catch_all (optional)

    See also method catch_all. Enables catch-all detection functionality on the recipient SMTP server. Defaults to 0 (disabled).

    This has a heavy impact on response time, so is disabled by default.

  • user_agent_opts (optional)

    See also method user_agent_opts. Sets default options for construction of a LWP::UserAgent object. Takes a hashref.

    Example:

     my $mailboxlayer = Net::Mailboxlayer->new(
       access_key => 'YOUR_ACCESS_KEY',
       email_address => 'support@apilayer.com',
       user_agent_opts => {
         ssl_opts => {verify_hostname => 1},
         timeout => 10,
       },
     );
  • user_agent

    See also method user_agent. This will allow you to override the default useragent LWP::UserAgent. The given value must be blessed and have a 'get' method.

  • <json_decoder>

    See also method json_decoder. This will allow you to override the default json decoder JSON::MaybeXS, which itself defaults to Cpanel::JSON::XS. The given value must be blessed and have a 'decode' method.

access_key

Allows you to set/change the access_key that you optionally provide with new. You must provide it before calling check. API KEYS are provided when you setup an account with https://mailboxlayer.com.

 $mailboxlayer->access_key('YOUR_ACCESS_KEY');

email_address

Allows you to set/change the email_address to measure. It must be provided before calling check.

 $mailboxlayer->email_address('support@apilayer.com');

endpoint

Allows you to set/change the endpoint that you optionally provide with new. Must be set before calling check. Defaults to https://apilayer.net/api/check.

 $mailboxlayer->endpoint('http://apilayer.net/api/check'); # don't use SSL for the endpoint
 $mailboxlayer->endpoint('https://apilayer.net/api/check'); # use SSL for the endpoint

smtp

Enables/disables the MX-Records and SMTP checks. Defaults to 1 (emabled).

 $mailboxlayer->smtp(0); # disable
 $mailboxlayer->smtp(1); # enable

Reasons to turn off SMTP Check:

The mailboxlayer SMTP Check feature takes up around 75% of the API's entire response time. If you would like to skip SMTP and speed up the API response, you may turn it off by setting the API's smtp parameter to 0.

format

Prettifies the JSON that is provided to Net::Mailboxlayer::Response. Use this only for debugging.

 $mailboxlayer->format(0); # disable
 $mailboxlayer->format(1); # enable

callback

Sets the preferred JSONP callback function. See the official docs (https://mailboxlayer.com/documentation) for more information. Provided for completeness.

catch_all

Enables catch-all detection on the recipient SMTP server. Defaults to 0 (disabled);

 $mailboxlayer->catch_all(0); # disable
 $mailboxlayer->catch_all(1); # enable

Note that as of 2016-08-12 this functionality is disabled for free accounts and will return an error if you enable it.

user_agent_opts

Sets default options for construction of a LWP::UserAgent object. Takes a hashref.

 $mailboxlayer->user_agent_opts({
  ssl_opts => {verify_hostname => 1},
  timeout => 10,
 });

The above tells LWP::UserAgent to verify ssl hostnames and sets the timeout to 10 seconds. See the LWP::UserAgent docs for more information and options.

user_agent

This will override the default LWP::UserAgent completely. Perhaps you want to construct your own, or you want to use an alternative module such as HTTP::Tiny.

 my $http = HTTP::Tiny->new(%attributes);
 $mailboxlayer->user_agent($http);

The only restriction is that you pass a blessed object that has a 'get' method.

json_decoder

This will override the default JSON::MaybeXS module. If you want to use JSON::XS instead, this would allow you.

 my $json = JSON::XS->new;
 $mailboxlayer->json_decoder($json);

The only restriction is that you pass a blessed ovject that has a 'decode' method.

check

Make the api call to measure the email_address.

This method will return either a Net::Mailboxlayer::Response object on success or a Net::Mailboxlayer::Error when an error occurs.

You can call $result->has_error to determine if there was an error or not.

 my $result = $mailboxlayer->check;
 if ($result->has_error)
 {
   # $result is a F<Net::Mailboxlayer::Error> object.
   print "There was an error: ". $result->info . "\n";
 }
 else
 {
   # $result is a F<Net::Mailboxlayer::Response> object.
   $result->score;
 }

AUTHOR

Tom Heady <cpan@punch.net>

COPYRIGHT & LICENSE

Copyright 2016 Tom Heady.

This program is free software; you can redistribute it and/or modify it under the terms of either:

  • the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or

  • the Artistic License.