Guest User

Untitled

a guest
Jul 21st, 2018
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. package GmailSender;
  2. use strict;
  3. use warnings;
  4. use Class::Accessor::Lite (
  5. new => 1,
  6. rw => [ qw(
  7. username
  8. password
  9. from
  10. to
  11. subject
  12. body
  13. )],
  14. );
  15.  
  16. use Encode;
  17. use utf8;
  18. use Carp;
  19. use Try::Tiny;
  20.  
  21. use Email::Sender::Simple qw(sendmail);
  22. use Email::MIME;
  23. use Email::MIME::Creator;
  24. use Email::Sender::Transport::SMTP::TLS;
  25.  
  26. sub send {
  27. my ($self) = @_;
  28.  
  29. my $sender = Email::Sender::Transport::SMTP::TLS->new(
  30. host => 'smtp.gmail.com',
  31. port => 587,
  32. username => $self->username,
  33. password => $self->password,
  34. );
  35.  
  36. my $email = Email::MIME->create(
  37. header => [
  38. From => mine_header_encode($self->from),
  39. To => mine_header_encode($self->to),
  40. Subject => mine_header_encode($self->subject),
  41. ],
  42. attributes => {
  43. content_type => 'text/plain',
  44. charset => 'ISO-2022-JP',
  45. encoding => '7bit',
  46. },
  47. body => encode('iso-2022-jp' => $self->body),
  48. );
  49.  
  50. try { sendmail($email, {transport => $sender}); }
  51. catch { croak "sending email failed : " . $_->message; };
  52. }
  53.  
  54. sub mine_header_encode {
  55. my $str = shift;
  56. encode('MIME-Header-ISO_2022_JP' => $str) if $str;
  57. }
  58.  
  59. 1;
Add Comment
Please, Sign In to add comment