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

Sisimai::Message - Converts the bounce email text to the data structure.

SYNOPSIS

    use Sisimai::Mail;
    use Sisimai::Message;

    my $mailbox = Sisimai::Mail->new('/var/mail/root');
    while( my $r = $mailbox->read ) {
        my $p = Sisimai::Message->rise('data' => $r);
    }

    my $notmail = '/home/neko/Maildir/cur/22222';       # is not a bounce email
    my $mailobj = Sisimai::Mail->new($notmail);
    while( my $r = $mailobj->read ) {
        my $p = Sisimai::Message->rise('data' => $r);   # $p is "undef"
    }

DESCRIPTION

Sisimai::Message converts the bounce email text to the data structure. It resolves the email text into the UNIX From line, the header part of the mail, the delivery status, and RFC822 header part lines. When the email given as a argument of new() method is not a bounce email, the method returns undef.

CLASS METHODS

rise(Hash reference)

rise() method is a constructor of Sisimai::Message

    my $mailtxt = 'Entire email text';
    my $message = Sisimai::Message->rise('data' => $mailtxt);

If you have implemented a custom MTA module and use it, set the value of load in the argument of this method as an array reference like following code:

    my $message = Sisimai::Message->rise(
                        'data' => $mailtxt,
                        'load' => ['Your::Custom::MTA::Module']
                  );

INSTANCE METHODS

(from)

from() method returns the UNIX From line of the email.

    print $message->from;

header()

header() method returns the header part of the email.

    print $message->header->{'subject'};    # Returned mail: see transcript for details

ds()

ds() method returns an array reference which include contents of the delivery status.

    for my $e ( $message->ds->@* ) {
        print $e->{'status'};   # 5.1.1
        print $e->{'recipient'};# neko@example.jp
    }

rfc822()

rfc822() method returns a hash reference which include the header part of the original message.

    print $message->rfc822->{'from'};   # cat@example.com
    print $message->rfc822->{'to'};     # neko@example.jp

catch()

catch() method returns any data generated by user-defined method passed at the c___ argument of new() constructor.

AUTHOR

azumakuniyuki

COPYRIGHT

Copyright (C) 2014-2024 azumakuniyuki, All rights reserved.

LICENSE

This software is distributed under The BSD 2-Clause License.