The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Mojo::Email::Checker::SMTP - Email checking by smtp with Mojo enviroment. (IDN supported)

SYNOPSIS

use strict;
use Mojolicious::Lite;
use Mojo::IOLoop::Delay;
use Mojo::Email::Checker::SMTP;

my $checker     = Mojo::Email::Checker::SMTP->new;

post '/' => sub {
	my $self    = shift;
	my $request = $self->req->json;

	my @emails;
	my $delay = Mojo::IOLoop::Delay->new;
	$delay->on(finish => sub {
			$self->render(json => \@emails);
	});

	my $cb = $delay->begin();

	for (@{$request}) {
		my $cb = $delay->begin(0);
		$checker->check($_, sub { push @emails, $_[0] if ($_[0]); $cb->(); });
	}

	$cb->();

};

app->start;

DESCRIPTION

Check for email existence by emulation smtp session to mail server (mx or direct domain, cycling for multiple ip) and get response. Mechanism description http://en.wikipedia.org/wiki/Callback_verification

METHODS

new

This is Checker object constructor. Available parameters are:

timeout

Timeout (seconds) for all I/O operations like to connect, wait for server response and NS Lookup. (15 sec. is default).

helo

HELO value for smtp session ("ya.ru" :) is default). Use your own domain name for this value.

cache

Enable caching for nslookup operation. In value, cache records timeout (in seconds). For example (cache => 3600) for one hour. Cache disabled if 0 value or undefined.

check(STR, CALLBACK(EMAIL, ERROR))

Main function for checking.

STR

String with email address ("foo@foobox.foo")

CALLBACK

Reference to callback function (see SYNOPSIS for example). Pass to CALLBACK two parameters, 1. valid (see comment) EMAIL (STR), 2. ERROR (STR) message.

Comment: If EMAIL and ERROR is defined, it's mean that reject from smtp server recieved before RCPT command. In other cases only one parameter is defined.

COPYRIGHT

Copyright Anatoly Y. <snelius@cpan.org>.
 
 This library is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.