Guest User

Untitled

a guest
Jun 20th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. package BoyosPlace::Email;
  2.  
  3. use Moose;
  4. use Moose::Util::TypeConstraints;
  5. use Email::Stuff;
  6. use Email::Send ();
  7. use Email::Valid;
  8.  
  9.  
  10. subtype 'Email',
  11. as 'Str',
  12. where { Email::Valid->address($_) eq $_ };
  13.  
  14. coerce 'Email',
  15. from 'Str',
  16. via { scalar Email::Valid->address($_) };
  17.  
  18. has 'subject' => ( is => 'ro', isa => "Str" );
  19. has 'to' => ( is => 'ro', isa => "Email" );
  20. has 'from' => ( is => 'ro', isa => "Email" );
  21. has 'data' => ( is => 'ro', isa => "Str" );
  22. has 'cc' => ( is => 'ro', isa => "Str" );
  23. has 'mailer' => ( is => 'ro', isa => "Str" );
  24.  
  25. # Borrowed from Reaction::Example::MailerForm
  26. has '_email_send_object' => (
  27. init_arg => 'email_send_object',
  28. is => 'ro', isa => 'Email::Send', required => 1
  29. );
  30.  
  31. has 'email' => ( is => 'ro', isa => "Email::Stuff",
  32. default => sub {
  33. my $self = shift;
  34. Email::Stuff->new(
  35. using =>$self->_email_send_object,
  36. from =>$self->from,
  37. to =>$self->to,
  38. cc =>$self->cc,
  39. subject =>$self->subject,
  40. text_body =>$self->data
  41. );
  42. },
  43. lazy =>1,
  44. );
  45.  
  46.  
  47. sub send {
  48. my $self = shift;
  49.  
  50. $self->email->send or die $!;
  51.  
  52. }
  53.  
  54.  
  55. no Moose;
  56.  
  57. __PACKAGE__->meta->make_immutable;
  58. 1;
Add Comment
Please, Sign In to add comment