package PerlWebmail::Message; use base qw(Mail::Internet); my $crlf = qr/\012|\015\012|\015/; my $quote_prefix = '>'; sub new { my $class = shift; $_ = Mail::Internet->new(\*STDIN); my $self = $class->SUPER::new(@_); return $self; } sub from { my ($self, $from) = @_; if ($from) { $self->add(From => $from); } $self->add(From => $from); } sub replyto { my ($self,$replyto) = @_; if ($replyto) { $self->add(Reply-To => $replyto); } $self->add(Reply-To => $replyto); } sub references { my ($self,$references) = @_; if ($references) { $self->add(References => $references); } $self->add(References => $references); } sub inreplyto { my ($self,$inreplyto) = @_; if ($inreplyto) { $self->add(In-Reply-To => $inreplyto); } $self->add(In-Reply-To => $inreplyto); } sub to { my ($self, $to) = @_; if ($to) { $self->add(To => $to); } $self->add(To => $to); } sub cc { my ($self, $cc) = @_; if ($cc) { $self->add(Cc => $cc); } $self->add(Cc => $cc); } sub bcc { my ($self, $bcc) = @_; if ($cc) { $self->add(Bcc => $bcc); } $self->add(Bcc => $bcc ); } sub subject { my ($self, $subject) = @_; if ($subject) { $self->add(Subject => $subject); } $self->add(Subject => $subject ); } sub body { my ($self, $body) = @_; if ($body) { $self->body($body); } $self->body($body); } sub asString { shift->as_string; } #my $crlf = qr/\x0a\x0d|\x0d\x0a|\x0a|\x0d/; #sub _strip_sig { reverse +(split /$crlf\s*--$crlf/o, reverse(pop), 2)[1] } sub quote { my $body = shift; $body =~ s/($crlf)/$1$quote_prefix /g; "\n\n$quote_prefix $body"; } 1; #### sub mailer { my($r,$attachment_file) = @_; my $msgbody_file = read_file( $r->{param}->{body} ); my $attachment_data = encode_base64( read_file( $attachment_file, 1 )); my $ft = File::Type->new(); my $type_from_file = $ft->checktype_filename($attachment_file); my $boundary = "====" . time . "===="; my$mail_content_type = qq(multipart/mixed; boundary="$boundary"); $boundary = '--'.$boundary; my$mail_body = <new( { mailer => 'SMTP::TLS', mailer_args => [ Host => $r->{config}->{smtpserver}, Port => 587, User => $r->{user}, Password => $r->{perlwebmail}->{user}->{password}, Hello => $r->{config}->{smtpserver}, ] } ); my$email = Email::Simple->create( header => [ From => $r->{user}->email, To => $r->{param}->{to}, Cc => $r->{param}->{cc}, Subject => $r->{param}->{subject}, ], body => $mail_body, ); eval { $mailer->send($email) }; die "Error sending email: $@" if $@; return retrieve_message($r); }