use Encode qw/encode decode/;
use Emesinae::Message;
+use Emesinae::MIME;
use Emesinae::Common;
use Emesinae::CGI;
return msglink( $m, "Retrieve Raw Message", "/raw" );
}
-sub getmailbody # From Debbugs
-{
- my $entity = shift;
- my $type = $entity->effective_type;
-
- if ( $type eq 'text/plain'
- or ( $type =~ m#text/?# and $type ne 'text/html' )
- or $type eq 'application/pgp' )
- {
- return $entity;
- }
- elsif ( $type eq 'multipart/alternative' ) {
-
- # RFC 2046 says we should use the last part we recognize.
- for my $part ( reverse $entity->parts ) {
- my $ret = getmailbody($part);
- return $ret if $ret;
- }
- }
- else {
-
- # For other multipart types, we just pretend they're
- # multipart/mixed and run through in order.
- for my $part ( $entity->parts ) {
- my $ret = getmailbody($part);
- return $ret if $ret;
- }
- }
- return undef;
-}
-
-sub getmailparts {
- my $entity = shift;
- my @ret;
- if ( $entity->is_multipart ) {
- for my $part ( $entity->parts ) {
- push @ret, getmailparts($part);
- }
- }
- else {
- push @ret, $entity;
- }
- return @ret;
-}
-
sub parthdr {
my ( $entity, $m, $nr ) = @_;
my $head = $entity->head;
my $tempdir = File::Temp::tempdir();
my $e = $m->get_mime($tempdir);
my $et = $e->effective_type;
- $bodyent = getmailbody($e);
+ $bodyent = Emesinae::MIME::getmailbody($e);
push @body, $bodyent->bodyhandle->as_lines;
rmtree $tempdir, 0, 1;
- @parts = getmailparts($e);
+ @parts = Emesinae::MIME::getmailparts($e);
# Strip leading and trailing blank lines
shift @body while @body and $body[0] !~ /\S/;
my $tempdir = File::Temp::tempdir();
my $e = $m->get_mime($tempdir);
- my @parts = getmailparts($e);
+ my @parts = Emesinae::MIME::getmailparts($e);
my $entity = $parts[ $part - 1 ];
my $head = $entity->head;
--- /dev/null
+package Emesinae::MIME;
+
+use warnings;
+use strict;
+
+sub getmailbody # From Debbugs
+{
+ my $entity = shift;
+ my $type = $entity->effective_type;
+
+ if ( $type eq 'text/plain'
+ or ( $type =~ m#text/?# and $type ne 'text/html' )
+ or $type eq 'application/pgp' )
+ {
+ return $entity;
+ }
+ elsif ( $type eq 'multipart/alternative' ) {
+
+ # RFC 2046 says we should use the last part we recognize.
+ for my $part ( reverse $entity->parts ) {
+ my $ret = getmailbody($part);
+ return $ret if $ret;
+ }
+ }
+ else {
+
+ # For other multipart types, we just pretend they're
+ # multipart/mixed and run through in order.
+ for my $part ( $entity->parts ) {
+ my $ret = getmailbody($part);
+ return $ret if $ret;
+ }
+ }
+ return undef;
+}
+
+sub getmailparts {
+ my $entity = shift;
+ my @ret;
+ if ( $entity->is_multipart ) {
+ for my $part ( $entity->parts ) {
+ push @ret, getmailparts($part);
+ }
+ }
+ else {
+ push @ret, $entity;
+ }
+ return @ret;
+}
+
+1;
+