Created
March 17, 2009 16:42
-
-
Save anonymous/80633 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
my $HOST = shift; | |
my $PORT = shift; | |
my $EMAILS = shift || 1; | |
die "HOST must be first argument" | |
unless $HOST; | |
die "PORT must be second argument" | |
unless $PORT; | |
use JSON qw( to_json ); | |
use Net::SMTP::Server; | |
use Net::SMTP::Server::Client; | |
my $server = Net::SMTP::Server->new( $HOST, $PORT ); | |
my $counter = 0; | |
$| = 1; | |
CONNECTION: while ( my $conn = $server->accept ) { | |
my $client = Net::SMTP::Server::Client->new( $conn ); | |
$client->process; | |
print to_json({ | |
to => $client->{TO}, | |
from => $client->{FROM}, | |
contents => $client->{MSG}, | |
counter => $counter, | |
emails => $EMAILS, | |
}); | |
print "\n"; | |
last CONNECTION if ++$counter >= $EMAILS; | |
} | |
exit(0); | |
=head1 NAME | |
t/smtpd.pl - A dumb SMTP server. | |
=head1 USAGE | |
perl smtpd.pl <hostname> <port> | |
=head1 DESCRIPTION | |
This program listens on the given hostname and port, then processes the | |
incoming SMTP client request. | |
Then it prints a JSON object of the data recieved and exits. | |
This program will only handle one request before exiting. | |
=head1 CAVEATS | |
You MUST C<sleep 1> after opening a pipe to this so that it can establish the | |
listening on the port. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment