[dancer-users] Message corrupt error during post

Hugues hugues at max4mail.com
Sat Apr 26 09:08:54 BST 2014


Hello joel

you can test you post with curl

  curl -d "param1=value1&param2=value2" http://localhost:80/reminder


add debug line in red

sub send_out_mail {
         use Email::Stuffer;
         my( $email, $body) = @_;
debug $email, $body;
         my $sender = 'joelz at pobox.com';
         Email::Stuffer->from($sender)
                                    ->to($email)
                                    ->subject("Reminder")
                                    ->text_body($body)
                                    ->send;

}

and change

sub find_passwd {
         return({ email => 'toto at wanadoo.fr', name => 'Name', password 
=> 'password', body => 'body' })
                 ;
}



the result seems correct ( without crash )

[7255]  core @0.000110> request: POST /reminder from 127.0.0.1 in 
/usr/local/share/perl5/Dancer/Handler.pm l. 56
[7255]  core @0.000573> [hit #1]Trying to match 'POST /reminder' against 
/^\/reminder$/ (generated from '/reminder') in 
/usr/local/share/perl5/Dancer/Route.pm l. 84
[7255]  core @0.000695> [hit #1]  --> got 1 in 
/usr/local/share/perl5/Dancer/Route.pm l. 102
[7255]  core @0.001035> [hit #1]entering before hook in 
/usr/local/share/perl5/Dancer/Hook.pm l. 58
[7255] debug @0.003781> [hit #1]toto at wanadoo.frbody in 
/home/test/pobox/lib/pobox.pm l. 69
[7255]  core @0.606941> [hit #1]response: 302 in 
/usr/local/share/perl5/Dancer/Handler.pm l. 181

for my point of view, pb come from

find_passwd { }

add debug ligne  to check all,  before send email,

bye
Hugues

Le 26/04/2014 09:09, Joel Roth a écrit :
> Hi Dancers,
>
> During development, I've put a file with the
> username/email/password on the site (generally bad practice,
> I know), and have a button for sending a password reminder.
>
> When the user posts a form with an "email" field to
> the /reminder route (see below) it results in the following error,
> which is issued *after* the mail is sent out:
>
> The page 'http://localhost:3000/reminder' couldn't be
> loaded.  Message Corrupt
>
> I would expect a redirect to '/reminder-has-been-sent'
>
> Do you have any suggestions?
>
> Kind regards,
>
> Joel
>
> --
>
> post '/reminder'    => sub {
>      my $email = params->{email};
>      my $result = find_passwd($email);
> 	session user => undef;
> 	session failed_login => undef;
>      if ($result)
>      {
>          send_out_mail($result->{email}, $result->{body}); # sent!
>          redirect '/reminder-has-been-sent';               # no redirect
>      }
>      else
>      {
>          redirect '/email-not-found';
>      }
> };
>
> There is a "before" clause.
>
>
> before sub {
>      if (!session('user') and request->path_info !~
>          m{(login|bye|reminder|reminder-has-been-sent|email-not-found)$}) {
>          # Pass the original path requested along to the handler:
>          session requested_path => request->path_info;
>          redirect('/login');
>      }
>      elsif ( ! authorized( session('user'), request->path_info)
>              and request->path_info ne '/forbidden'){
>          # Pass the original path requested along to the handler:
>          session requested_path => request->path_info;
>          redirect('/forbidden');
>      }
> };
>
> sub find_passwd {
> 	my $user_or_email = shift;
> 	# we expect to be in Dancer app directory
> 	my @entries = read_file('pass');
> 	my $body;
> 	my ($name, $email, $username, $password);
> 	map { chomp } @entries;
> 	foreach my $entry( @entries ){
> 		($name, $email, $username, $password) = split /\s*:\s*/, $entry;
> 		next if $user_or_email ne $username and $user_or_email ne $email;
> 		say "-->$name";
> 		$body = mail_body($name, $username, $password);
> 		last
> 	}
> 	return({ email => $email, name => $name, password => $password, body => $body })
> 		if $body;
> }
> sub mail_body {
> 	my ($name, $username, $password) = @_;
> 	my ($first) = $name =~ /(.+?)\s*\S*$/;
> 	#say $first;
> <<FORM;
> Dear $first,
>
> This automated mail contains your login credentials for
>
> http://example.com
>
> Your username is $username
> Your password is $password
>
> FORM
> }
> sub send_out_mail {
> 	my( $email, $body) = @_;
> 	my $sender = 'joelz at pobox.com';
> 	Email::Stuffer->from($sender)
> 				   ->to($email)
> 				   ->subject("Reminder")
> 				   ->text_body($body)
> 				   ->send;
> 	
> }
>
> 1

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.preshweb.co.uk/pipermail/dancer-users/attachments/20140426/741c120b/attachment-0001.html>


More information about the dancer-users mailing list