summaryrefslogtreecommitdiff
path: root/lib/JWebmail/Controller
diff options
context:
space:
mode:
Diffstat (limited to 'lib/JWebmail/Controller')
-rw-r--r--lib/JWebmail/Controller/Webmail.pm24
1 files changed, 15 insertions, 9 deletions
diff --git a/lib/JWebmail/Controller/Webmail.pm b/lib/JWebmail/Controller/Webmail.pm
index 3ec93f1..5f8d986 100644
--- a/lib/JWebmail/Controller/Webmail.pm
+++ b/lib/JWebmail/Controller/Webmail.pm
@@ -2,7 +2,7 @@ package JWebmail::Controller::Webmail;
use Mojo::Base 'Mojolicious::Controller';
-use File::Type;
+use Mojolicious::Types;
use constant {
S_USER => 'user', # Key for user name in active session
@@ -219,7 +219,7 @@ sub sendmail {
$mail{bcc} = $v->optional('bcc', 'not_empty')->check('mail_line')->every_param;
$mail{reply} = $v->optional('back_to', 'not_empty')->check('mail_line')->param;
$mail{attach} = $v->optional('attach', 'non_empty_ul')->upload->param;
- $mail{attach_type} = File::Type->new()->mime_type($mail{attach}->asset->get_chunk(0, 512)) if $mail{attach};
+ $mail{attach_type} = Mojolicious::Types->new->file_type($mail{attach}->filename) if $mail{attach};
$mail{from} = $self->session(S_USER);
if ($v->has_error) {
@@ -292,14 +292,20 @@ sub raw {
my $mail = $self->users->show($auth, $mid);
- if ($self->param('body')//'' eq 'html') {
- if ($mail->{content_type} eq 'text/html') {
- $self->render(text => $mail->{body}) ;
- }
- elsif ($mail->{content_type} eq 'multipart/alternative') {
- my ($content) = grep {$_->{type} eq 'text/html'} @{ $mail->{body} };
+ my $v = $self->validation;
+ $v->optional('body')->like(qr/\w+/);
+ if ($v->has_error) {
+ return;
+ }
+
+ if (my $type = $self->param('body')) {
+ if ($mail->{content_type} =~ '^multipart/') {
+ my ($content) = grep {$_->{type} =~ $type} @{ $mail->{body} };
$self->render(text => $content->{val});
}
+ elsif ($mail->{content_type} =~ $type) {
+ $self->render(text => $mail->{body}) ;
+ }
else {
$self->res->code(404);
}
@@ -383,4 +389,4 @@ Displays the mail raw, ready to be downloaded.
Mojolicious and File::Type
-=cut \ No newline at end of file
+=cut