NAME

Haineko::SMTPD::Relay::MX - ESMTP Connection class for sending server listed in MX record or A record

DESCRIPTION

Send an email to external server listed in MX resource record or A resource record using SMTP protocol.

SYNOPSIS

use Haineko::SMTPD::Relay::MX;
my $h = { 'Subject' => 'Test', 'To' => 'neko@example.org' };
my $v = { 
    'ehlo' => '[127.0.0.1]',
    'mail' => 'kijitora@example.jp',
    'rcpt' => 'neko@example.org',
    'head' => $h,
    'body' => 'Email message',
};
my $e = Haineko::SMTPD::Relay::MX->new( %$v );
my $s = $e->sendmail;

print $s;                   # 0 = Failed to send, 1 = Successfully sent
print $e->response->error;  # 0 = No error, 1 = Error
print $e->response->dsn;    # returns D.S.N. value

warn Data::Dumper::Dumper $e->response;
$VAR1 = bless( {
         'dsn' => '2.1.0',
         'error' => 0,
         'code' => '250',
         'host' => 'mx1.example.org',
         'port' => 25,
         'rcpt' => 'neko@example.org',
         'message' => [
                '2.0.0 OK Authenticated',
                '2.1.0 <kijitora@example.jp>... Sender ok'
                  ],
         'command' => 'QUIT'
        }, 'Haineko::SMTPD::Response' );

``host'' property and ``port'' property will be ignored even if it is defined
in etc/mailertable or etc/sendermt. The host is decided by DNS lookup and then
try to send the host listed in MX resource records. 

If Haineko could not connected to the hosts listed in MX, Haineko trys to connect
the host listed in A resource record.

``port'' property is always ``25'', ``auth'' and ``starttls'' property is also
ignored in this class.

CLASS METHODS

new( %arguments )

new() is a constructor of Haineko::SMTPD::Relay::MX

my $e = Haineko::SMTPD::Relay::MX->new( 
        'timeout' => 59,                # Timeout for Net::SMTP
        'debug' => 0,                   # Debug for Net::SMTP
        'attr' => {                     # Args for Email::MIME
            'content_type' => 'text/plain'
        },
        'head' => {                     # Email header
            'Subject' => 'Test',
            'To' => 'neko@example.org',
        },
        'body' => 'Email message',      # Email body
        'mail' => 'kijitora@example.jp',# Envelope sender
        'rcpt' => 'cat@example.org',    # Envelope recipient
);

INSTANCE METHODS

sendmail

sendmail() will send email to the specified recipient via specified host.

my $e = Haineko::SMTPD::Relay::MX->new( %argvs );
print $e->sendmail;         # 0 = Failed to send, 1 = Successfully sent
print Dumper $e->response;  # Dumps Haineko::SMTPD::Response object

REPOSITORY

https://github.com/azumakuniyuki/Haineko

AUTHOR

azumakuniyuki <perl.org [at] azumakuniyuki.org>

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.