Email::Send - Simply Sending Email
use Email::Send; send SMTP => <<'__MESSAGE__', $host; To: casey@geeknest.com From: foo@example.com Blah __MESSAGE__ use Email::Send qw[Sendmail]; # preload mailer(s) my $email_obj = Email::Simple->new($msg); send Sendmail => $email_obj; my $mime_message = Simple::MIME->new(...); send IO => $mime_message, '-'; # print to STDOUT send My::Own::Special::Sender => $msg, %options;
This module provides a very simple, very clean, very specific interface to multiple Email mailers. The goal if this software is to be small and simple, easy to use, and easy to extend.
Mailers are simple to use. You can pre-load mailers when using Email::Send.
Email::Send
use Email::Send qw[SMTP NNTP];
If you don't preload a mailer before you use it in the send function, it will by dynamically loaded. Mailers are named either relative to the Email::Send namespace, or fully qualified. For example, when using the IO mailer, Email::Send first tries to load Email::Send::IO. If that fails, an attempt is made to load IO. If that final attempt fails, Email::Send will throw an exception.
send
IO
Email::Send::IO
my $rv = send $mailer => $message, @args;
This function tries to send $message using $mailer. $message and $mailer are required arguments. Anything passed in @args is passed directly to $mailer. Note that various mailers may require certain arguments. Please consult the documentation for any mailer you choose to use.
$message
$mailer
@args
If Email::Abstract is installed, the format of $message is specified exactly as anything that Email::Abstract can grok and return as_string. This currently includes most email building classes and a properly formatted message as a string. If you have a message type that Email::Abstract doesn't understand, read its documentation for instructions on how to extend it.
Email::Abstract
as_string
Otherwise you may pass a message as a text string, or as an object whose class is Email::Simple, or inherits from Email::Simple like Email::MIME.
Email::Simple
Email::MIME
Send is exported at compile time, unless the caller already has a function called send. If you don't want send to be exported, please load this module using require instead of use. Here's an example.
require
use
require Email::Send;
Writing new mailers is very simple. If you want to use a short name when calling send, name your mailer under the Email::Send namespace. If you don't, the full name will have to be used. A mailer only needs to implement a single function, send. It will be called from Email::Send exactly like this.
Your::Sending::Package::send($message, @args);
$message is an Email::Simple object, @args are the extra arguments passed into Email::Send::send.
Email::Send::send
Here's an example of a mailer that sends email to a URL.
package Email::Send::HTTP::Post; use strict; use vars qw[$AGENT $URL $FIELD]; use Carp qw[croak]; use LWP::UserAgent; sub send { my ($message, @args); if ( @args ) { my ($URL, $FIELD) = @args; $AGENT = LWP::UserAgent->new; } croak "Can't send to URL if no URL and field are named" unless $URL && $FIELD; $AGENT->post($URL => { $FIELD => $message->as_string }); } 1;
This example will keep a UserAgent singleton unless new arguments are passed to send. It is used by calling Email::Send::send.
send HTTP::Post => $message, 'http://example.com/incoming', 'message'; send HTTP::Post => $message2; # uses saved $URL and $FIELD
Email::Abstract, Email::Send::IO, Email::Send::NNTP, Email::Send::Qmail, Email::Send::SMTP, Email::Send::Sendmail, perl.
Casey West, <casey@geeknest.com>.
Copyright (c) 2004 Casey West. All rights reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Email::Send, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Email::Send
CPAN shell
perl -MCPAN -e shell install Email::Send
For more information on module installation, please visit the detailed CPAN module installation guide.