NAME

OpenInteract::Utility - Package of routines that do not really fit anywhere else

SYNOPSIS

# Send a mail message from anywhere in the system
eval { OpenInteract::Utility->send_mail({ to      => 'dingdong@nutty.com',
                                          from    => 'whynot@metoo.com',
                                          subject => 'wassup?',
                                          message => 'we must get down' }) };
if ( $@ ) {
    warn "Mail not sent! Reason: $@";

}

# Send a mail message with an attachment from anywhere in the system

eval { OpenInteract::Utility->send_mail({ to      => 'dingdong@nutty.com',
                                          from    => 'whynot@metoo.com',
                                          subject => 'wassup?',
                                          message => 'we must get down',
                                          attach  => 'uploads/data/item4.pdf' }) };
if ( $@ ) {
    warn "Mail not sent! Reason: $@";
}

DESCRIPTION

This class currently implments utilities for sending email. Note: In the future the mailing methods may move into a separate class (e.g., OpenInteract::Mailer)

METHODS

send_email( \% )

Sends an email with the parameters you specify.

On success: returns a true value;

On failure: dies with general error message ('Cannot send email: <error>') and sets typical messages in OpenInteract::Error, including the parameters in extra that match those passed in.

The parameters used are:

  • to ($) (required)

    To whom will the email be sent. Values such as:

    to => 'Mario <mario@donkeykong.com>'

    are fine.

  • from ($) (optional)

    From whom the email will be sent. If not specified we use the value of the 'mail'->'admin_email' key in your server configuration (conf/server.perl file).

  • message ($) (optional)

    What the email will say. Sending an email without any attachments and without a message is pointless but allowed. If you do not specify a message and you are sending attachments, we use a simple one for you.

  • subject ($) (optional)

    Subject of email. If not specified we use 'Mail sent from OpenInteract'

  • attach ($ or \@) (optional)

    One or more files to send as attachments to the message. (See below.)

ATTACHMENTS

You can specify any type or size of file

EXAMPLES

# Send a christmas list

eval { OpenInteract::Utility->send_mail({
                        to      => 'santa@xmas.com',
                        subject => 'gimme gimme!',
                        message => join "\n", @xmas_list }) };
if ( $@ ) {
  my $ei = OpenInteract::Error->get;
  carp "Failed to send an email! Error: $ei->{system_msg}\n",
       "Mail to: $ei->{extra}{to}\nMessage: $ei->{extra}{message}";
}

# Send a really fancy christmas list

eval { OpenInteract::Utility->send_mail({
                        to      => 'santa@xmas.com',
                        subject => 'Regarding needs for this year',
                        message => 'Attached is my Christmas list. Please acknowlege with fax.',
                        attach  => [ 'lists/my_xmas_list-1.39.pdf' ] }) };
if ( $@ ) {
  my $ei = OpenInteract::Error->get;
  carp "Failed to send an email! Error: $ei->{system_msg}\n",
       "Mail to: $ei->{extra}{to}\nMessage: $ei->{extra}{message}";
}

# Send an invoice for a customer; if it fails, throw an error which
# propogates an alert queue for customer service reps

eval { OpenInteract::Utility->send_mail({
                        to      => $customer->{email},
                        subject => "Order Reciept: #$order->{order_number}",
                        message => $myclass->create_invoice( $order ) }) };
if ( $@ ) {
    $R->throw({ code => 745 });
}

TO DO

Spool email option

Instead of sending the email immediately, provide the option for saving the mail information to a spool directory ($CONFIG->get_dir( 'mail' )) for later processing.

Also, have the option for spooling the mail on a sending error as well so someone can go back to the directory, edit it and resubmit it for processing.

Additional options

In the server configuration file, be able to do something like:

'mail' => {
    'smtp_host'     => '127.0.0.1',
    'admin_email'   => 'admin@mycompany.com',
    'content_email' => 'content@mycompany.com',
    'max_size'      => 3000,           # in KB
    'header'        => 'email_header'  # template name
    'footer'        => 'email_footer'  # template name
}

And have emails with a size > 'max_size' get rejected (or spooled), while all outgoing emails (unless otherwise specified) get the header and footer templates around the content.

BUGS

None known.

SEE ALSO

Mail::Sendmail

MIME::Lite

COPYRIGHT

Copyright (c) 2001-2003 intes.net, inc.. All rights reserved.

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

AUTHORS

Chris Winters <chris@cwinters.com>