Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

best way to transfor package Mail::Internet to Email::MIME and send mail

by swilting (Beadle)
on Sep 12, 2010 at 21:19 UTC ( #859914=perlquestion: print w/ replies, xml ) Need Help??
swilting has asked for the wisdom of the Perl Monks concerning the following question:

i have some example of code i cote

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;

its package for parse email

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 = <<END_OF_BODY; $boundary $mail_content_type Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable $msgbody_file $boundary Content-Type: $type_from_file ; name=$attachment_file Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=$attachment_file $attachment_data $boundary-- END_OF_BODY my$mailer = Email::Send->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); }

best things and more exemple are welcome to upper quality of code many return are welcome best explication for the studier and studients

its the code of jaos i studied him

Comment on best way to transfor package Mail::Internet to Email::MIME and send mail
Select or Download Code
Re: best way to transfor package Mail::Internet to Email::MIME and send mail
by sflitman (Hermit) on Sep 12, 2010 at 22:18 UTC
    First, your question is not clear. Please rephrase it with respect to the code you are showing. I am guessing you mean that you want to make your own package which encapsulates (packages, hides) the mechanics of sending email, but what you have shown is just extracting various headers.

    Second, your code would benefit from starting with:

    #!/usr/bin/perl (or equivalent for your platform) use strict; use warnings;

    HTH,
    SSF

Re: best way to transfor package Mail::Internet to Email::MIME and send mail
by marto (Chancellor) on Sep 13, 2010 at 09:34 UTC

    What are you asking? Is the title of your post actually the entire question? See How do I post a question effectively?. Do you want to alter this module someone else has written to use Email::MIME rather than Mail::Internet? If so simply study the documentation, for both modules, note which methods are being used and what their equivalent is and alter the code above where required.

Re: best way to transfor package Mail::Internet to Email::MIME and send mail
by roboticus (Canon) on Sep 13, 2010 at 12:17 UTC

    swilting:

    Hmmm ... many of your subs look like this:

    sub from { my ($self, $from) = @_; if ($from) { $self->add(From => $from); } $self->add(From => $from); }

    I don't see why you're doing the last line of each of them. Are you truly intending to call the function once when there's no from address and twice when there is? Additionally, shouldn't you bless your object in your new function? How are these subroutines going to get called if you don't?

    ...roboticus

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://859914]
Approved by sflitman
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (10)
As of 2014-08-22 08:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (151 votes), past polls