The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Test;
use IO::Socket;
use Net::SMTP;

BEGIN {plan tests => 10;}

use Net::Server::Mail::SMTP;
ok(1);

my $server_port = 2525;
my $server;

while(not defined $server && $server_port < 4000)
{
    $server = new IO::Socket::INET
    (
        Listen      => 1,
        LocalPort   => ++$server_port,
    );
}

my $pid = fork;
if(!$pid)
{
    while(my $conn = $server->accept)
    {
        my $m = new Net::Server::Mail::SMTP socket => $conn, idle_timeout => 5
            or die "can't start server on port 2525";
        $m->process;
    }
}

my $smtp = new Net::SMTP "localhost:$server_port", Debug => 0;
ok(defined $smtp);

ok($smtp->mail("test\@bla.com"));
ok(!$smtp->mail("test\@bla.com"));
ok($smtp->to('postmaster'));
ok($smtp->to('postmaster'));
ok($smtp->data);
ok($smtp->datasend('To: postmaster'));
ok($smtp->dataend);
ok($smtp->quit);

kill 1, $pid;
wait;