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

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.