my @to;
if ( exists($opt{'to'}) ) {
+
@to = split(/\s*,\s*/, $opt{'to'});
+
+ } elsif ( $cust_main ) {
+
+ my @classes;
+ if ( $opt{'to_contact_classnum'} ) {
+ my $classnum = $opt{'to_contact_classnum'};
+ @classes = ref($classnum) ? @$classnum : split(',', $classnum);
+ }
+ if (!@classes) {
+ @classes = ( 'invoice' );
+ }
+ @to = $cust_main->contact_list_email(@classes);
+
+ } else {
+
+ die 'no To: address or cust_main object specified';
+
}
- else {
- @to = $cust_main->invoicing_list_emailonly;
- }
- # no warning when preparing with no destination
my $from_addr = $self->from_addr;
'bcc' => $self->bcc_addr || undef,
'subject' => $subject,
'html_body' => $body,
- 'text_body' => $text_body
+ 'text_body' => $text_body,
);
}
=item send OPTION => VALUE
Fills in the template and sends it to the customer. Options are as for
-'prepare'.
+'prepare', plus 'attach', a L<MIME::Entity> (or arrayref of them) to attach
+to the message.
=cut
# preview it, etc.
sub send {
my $self = shift;
- send_email(generate_email($self->prepare(@_)));
+ my %opt = @_;
+
+ my %email = generate_email($self->prepare(%opt));
+ if ( $opt{'attach'} ) {
+ my @attach;
+ if (ref($opt{'attach'}) eq 'ARRAY') {
+ @attach = @{ $opt{'attach'} };
+ } else {
+ @attach = $opt{'attach'};
+ }
+ push @{ $email{mimeparts} }, @attach;
+ }
+
+ send_email(%email);
}
=item render OPTION => VALUE ...