EasyMail - Perl Send Mail Interface
use EasyMail; if(defined(&EasyMail::foo)){ print "lib is included"; }else{ print "lib is not included"; } my $email_from = {'email'=>'test@adways.net', 'name'=>'Test'}; my $email_to = 'receiver@adways.net';
# $email_name_pair is a variable specify a email and name # $name can be undef,set $name=undef if $name eq '' # $email_name_pair can be a string # A: "$email" # B: "$name $email" if not A # C: "$email $name" if not A,B # D: "\"$name\"<$email>" if not A,B,C # E: "$name<$email>" if not A,B,C,D # $email can be a array_ref # A: [$email,$name] # B: [$name,$email] if not A # $email can be a hash_ref # {email=>$email,name=>$name}
my $email_cc = $email_to; my $email_bcc = []; my $ra_filters = ['adways.net']; my $file = { 'file_path' => '/usr/local/src/test.txt', #path to file 'file_bin' => undef, #binary content of file 'file_name' => undef, #file name 'content_type' => undef, #content type 'content_id' => undef #content_id, when u wanna embed picture in html email u need it
# the rule of $file # 1,you "must and can only" set one of file_path and file_bin,or will throw an exception # 2,if file_name set, {file_name}=file_name # 3,if file_name not set and file_path set,then {file_name} will be generate by file_path # 4,if file_name not set and file_path not set and content_id set,then no {file_name} # 5,if content_type set,then {content_type}=content_type # 6,if content_type not set and {file_name} set,then {content_type} will be generate by {file_name} # 7,if content_id set,then consider this file as part of multi_related structure,else if content_id not set then consider this file as part of multi_mixed structure };
my $mail = { 'sender_type' => 'SMTPAUTHLOGIN', # SENDMAIL | SMTPAUTHLOGIN | SMTPAUTHPLAIN | SMTPAUTHNONE # default is 'SENDMAIL' 'smtp_host' => '127.0.0.1', # smtp host address default is 127.0.0.1 (if sender is smtp) 'smtp_port' => 25, # smtp host port (if sender is smtp) 'smtp_usr' => 'admin', # smtp author usr name (if needed) 'smtp_pass' => 'password', # smtp author usr pass (if needed) 'sendmail_path' => '/usr/sbin', # the path of sendmail, default is 'sendmail'(if needed) 'type' => 'txt', # can be 'html' 'plain' 'txt' 'text' default is 'plain' # 'txt' 'text' is alias for 'plain' # the recomend way you set mail as plain text mail is set it 'plain' 'subject' => 'Test Mail', # the mail subject, default is 'No Subject' 'body' => 'This is a test.', # the text content of mail, default is '' 'files' => $file, # files to be attach to the mail files=>[$file,$file,..], default is [] 'from' => $email_from, # $email_name_pair 'to' => $email_to, # $email_name_pair || [$email_name_pair,$email_name_pair,..], default is [] 'cc' => $email_cc, # $email_name_pair || [$email_name_pair,$email_name_pair,..], default is [] 'bcc' => $email_bcc, # $email_name_pair || [$email_name_pair,$email_name_pair,..], default is [] 'mail_filter' => $ra_filters, # [$email_filter, $email_filter, ..], default is [] # email_filter: only allow specified email to send ( for debug use) 'return_path' => '/tmp/failmail', #sendmail to this address if sendmail fail ,default is not set 'src_encoding' => 'utf8', #source mail encoding 'dst' => 'un' # 'cn' || 'un' || 'jp' # 'cn' for gb2312 encoding, 'un' for utf8 encoding, 'jp' for iso-2022-jp encoding
# extra rules: # from is must set # to and cc must contains more than one valid email # if (input is all unicode or input is all ascii){ # src_encoding can be not set # }else{ # src_encoding must set # } # dst must set # in to cc bcc, [$email,$email] is parse as two receiver email
}; EasyMail::sendmail($mail);
The synopsis above only lists the major methods and parameters.
$mail is a hash_ref with below options : sender_type # SENDMAIL | SMTPAUTHLOGIN | SMTPAUTHPLAIN | SMTPAUTHNONE | DIRECT # default is 'SENDMAIL' smtp_host # smtp host address default is 127.0.0.1 (if sender is smtp) smtp_port # smtp host address (if sender is smtp) smtp_usr # smtp author usr name (if needed) smtp_pass # smtp author usr pass (if needed) sendmail_path #the path of sendmail, default is 'sendmail'(if needed) type #can be 'html' 'plain' 'txt' 'text' default is 'plain' #'txt' 'text' is alias for 'plain' #the recomend way you set mail as plain text mail is set it 'plain' subject #the mail subject, default is 'No Subject' body #the text content of mail, default is '' files #files to be attach to the mail files=>[$file,$file,..], default is [] from #$email_name_pair to # $email_name_pair || [$email_name_pair,$email_name_pair,..], default is [] cc # $email_name_pair || [$email_name_pair,$email_name_pair,..], default is [] bcc # $email_name_pair || [$email_name_pair,$email_name_pair,..], default is [] return_path #sendmail to this address if sendmail fail ,default is not set src_encoding #source mail encoding dst # 'cn' || 'un' || 'jp' # 'cn' for gb2312 encoding, 'un' for utf8 encoding, 'jp' for iso-2022-jp encoding extra rules: from is must set to and cc must contains more than one valid email if (input is all unicode or input is all ascii){ src_encoding can be not set }else{ src_encoding must set } dst must set in to cc bcc, [$email,$email] is parse as two receiver email
$email_name_pair is a variable specify a email and name $name can be undef,set $name=undef if $name eq '' $email_name_pair can be a string: A: "$email" B: "$name $email" if not A C: "$email $name" if not A,B D: "\"$name\"<$email>" if not A,B,C E: "$name<$email>" if not A,B,C,D $email can be a array_ref: A: [$email,$name] B: [$name,$email] if not A $email can be a hash_ref: {email=>$email,name=>$name}
$file is a hash_ref with below options : file_path #path to file file_bin #binary content of file file_name #file name content_type #content type content_id #content_id, when u wanna embed picture in html email u need it the rule of $file: 1,you "must and can only" set one of file_path and file_bin,or will throw an exception 2,if file_name set, {file_name}=file_name 3,if file_name not set and file_path set,then {file_name} will be generate by file_path 4,if file_name not set and file_path not set and content_id set,then no {file_name} 5,if content_type set,then {content_type}=content_type 6,if content_type not set and {file_name} set,then {content_type} will be generate by {file_name} 7,if content_id set,then consider this file as part of multi_related structure,else if content_id not set then consider this file as part of multi_mixed structure
The EasyMail module is Copyright (c) 2003-2008 QIAN YU. All rights reserved.
You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.
1 POD Error
The following errors were encountered while parsing the POD:
Non-ASCII character seen before =encoding in 'set,then'. Assuming UTF-8
To install EasyMail, copy and paste the appropriate command in to your terminal.
cpanm
cpanm EasyMail
CPAN shell
perl -MCPAN -e shell install EasyMail
For more information on module installation, please visit the detailed CPAN module installation guide.