| blib/lib/Email/Send/YYClouds.pm | |||
|---|---|---|---|
| Criterion | Covered | Total | % |
| statement | 12 | 14 | 85.7 |
| branch | n/a | ||
| condition | n/a | ||
| subroutine | 5 | 5 | 100.0 |
| pod | n/a | ||
| total | 17 | 19 | 89.4 |
| line | stmt | bran | cond | sub | pod | time | code |
|---|---|---|---|---|---|---|---|
| 1 | package Email::Send::YYClouds; | ||||||
| 2 | |||||||
| 3 | 1 | 1 | 13109 | use 5.006; | |||
| 1 | 2 | ||||||
| 4 | 1 | 1 | 3 | use strict; | |||
| 1 | 0 | ||||||
| 1 | 17 | ||||||
| 5 | 1 | 1 | 2 | use warnings; | |||
| 1 | 4 | ||||||
| 1 | 25 | ||||||
| 6 | 1 | 1 | 474 | use utf8; | |||
| 1 | 9 | ||||||
| 1 | 3 | ||||||
| 7 | 1 | 1 | 248 | use MIME::Lite; | |||
| 0 | |||||||
| 0 | |||||||
| 8 | use MIME::Words qw(encode_mimewords); | ||||||
| 9 | |||||||
| 10 | =encoding utf8 | ||||||
| 11 | |||||||
| 12 | =head1 NAME | ||||||
| 13 | |||||||
| 14 | Email::Send::YYClouds - Send email using YYClouds' smtp server | ||||||
| 15 | |||||||
| 16 | =head1 VERSION | ||||||
| 17 | |||||||
| 18 | Version 0.02 | ||||||
| 19 | |||||||
| 20 | =cut | ||||||
| 21 | |||||||
| 22 | our $VERSION = '0.02'; | ||||||
| 23 | |||||||
| 24 | |||||||
| 25 | =head1 SYNOPSIS | ||||||
| 26 | |||||||
| 27 | use Email::Send::YYClouds; | ||||||
| 28 | |||||||
| 29 | my $msg = Email::Send::YYClouds->new(); | ||||||
| 30 | $msg->send(recepient => ['user@yy.com','user@163.com'], | ||||||
| 31 | subject => '测试邮件', | ||||||
| 32 | body => ' 这是一封测试邮件 Just a test message for you ', |
||||||
| 33 | is_html => 1, | ||||||
| 34 | ); | ||||||
| 35 | |||||||
| 36 | |||||||
| 37 | =head1 SUBROUTINES/METHODS | ||||||
| 38 | |||||||
| 39 | =head2 new | ||||||
| 40 | |||||||
| 41 | $msg = Email::Send::YYClouds->new(); | ||||||
| 42 | $msg = Email::Send::YYClouds->new(debug=>1); # with debug open | ||||||
| 43 | |||||||
| 44 | =cut | ||||||
| 45 | |||||||
| 46 | sub new { | ||||||
| 47 | |||||||
| 48 | my $class = shift; | ||||||
| 49 | my %args = @_; | ||||||
| 50 | my $debug = $args{'debug'}; | ||||||
| 51 | |||||||
| 52 | $debug = 0 unless defined $debug; | ||||||
| 53 | bless { debug=>$debug },$class; | ||||||
| 54 | } | ||||||
| 55 | |||||||
| 56 | =head2 send | ||||||
| 57 | |||||||
| 58 | $msg->send(recepient => [a list of recepients], | ||||||
| 59 | subject => $subject, | ||||||
| 60 | body => $body, | ||||||
| 61 | is_html => $boolean, | ||||||
| 62 | ); | ||||||
| 63 | |||||||
| 64 | Default sender should always be noreply@yyclouds.com, you can't change it. | ||||||
| 65 | |||||||
| 66 | recepient - a list of email addresses for receiving message. | ||||||
| 67 | |||||||
| 68 | subject - email subject, which can be either Chinese or non-Chinese. | ||||||
| 69 | |||||||
| 70 | body - message body, which can be either Chinese or non-Chinese. | ||||||
| 71 | |||||||
| 72 | is_html - default 0, it must be set to 1 if this is a html message. | ||||||
| 73 | |||||||
| 74 | Please notice: Only when MTA relay has authorized the sender host from where you can send messages. | ||||||
| 75 | |||||||
| 76 | Otherwise you will get error: | ||||||
| 77 | |||||||
| 78 | SMTP recipient() command failed: | ||||||
| 79 | 5.7.1 |
||||||
| 80 | |||||||
| 81 | Contact the sysops to authorize it. | ||||||
| 82 | |||||||
| 83 | =cut | ||||||
| 84 | |||||||
| 85 | sub send { | ||||||
| 86 | |||||||
| 87 | my $self = shift; | ||||||
| 88 | my %args = @_; | ||||||
| 89 | |||||||
| 90 | my $recepient = $args{'recepient'}; | ||||||
| 91 | my $subject = $args{'subject'}; | ||||||
| 92 | my $body = $args{'body'}; | ||||||
| 93 | my $is_html = $args{'is_html'}; | ||||||
| 94 | $is_html = 0 unless defined $is_html; | ||||||
| 95 | |||||||
| 96 | my $type = $is_html ? "text/html" : "text/plain"; | ||||||
| 97 | my $to_address = join ',',@$recepient; | ||||||
| 98 | my $encoded_subject = encode_mimewords($subject,'Charset','UTF-8'); | ||||||
| 99 | |||||||
| 100 | my $msg = MIME::Lite->new ( | ||||||
| 101 | From => 'noreply@yyclouds.com', | ||||||
| 102 | To => $to_address, | ||||||
| 103 | Subject => $encoded_subject, | ||||||
| 104 | Type => $type, | ||||||
| 105 | Data => $body, | ||||||
| 106 | Encoding => 'base64', | ||||||
| 107 | ) or die "create container failed: $!"; | ||||||
| 108 | |||||||
| 109 | $msg->attr('content-type.charset' => 'UTF-8'); | ||||||
| 110 | $msg->send( 'smtp', | ||||||
| 111 | 'smtp.game.yy.com', | ||||||
| 112 | Debug => $self->{debug} | ||||||
| 113 | ); | ||||||
| 114 | } | ||||||
| 115 | |||||||
| 116 | |||||||
| 117 | =head1 AUTHOR | ||||||
| 118 | |||||||
| 119 | Ken Peng, C<< |
||||||
| 120 | |||||||
| 121 | =head1 BUGS | ||||||
| 122 | |||||||
| 123 | Please report any bugs or feature requests to C |
||||||
| 124 | the web interface at L |
||||||
| 125 | automatically be notified of progress on your bug as I make changes. | ||||||
| 126 | |||||||
| 127 | |||||||
| 128 | |||||||
| 129 | |||||||
| 130 | =head1 SUPPORT | ||||||
| 131 | |||||||
| 132 | You can find documentation for this module with the perldoc command. | ||||||
| 133 | |||||||
| 134 | perldoc Email::Send::YYClouds | ||||||
| 135 | |||||||
| 136 | |||||||
| 137 | You can also look for information at: | ||||||
| 138 | |||||||
| 139 | =over 4 | ||||||
| 140 | |||||||
| 141 | =item * RT: CPAN's request tracker (report bugs here) | ||||||
| 142 | |||||||
| 143 | L |
||||||
| 144 | |||||||
| 145 | =item * AnnoCPAN: Annotated CPAN documentation | ||||||
| 146 | |||||||
| 147 | L |
||||||
| 148 | |||||||
| 149 | =item * CPAN Ratings | ||||||
| 150 | |||||||
| 151 | L |
||||||
| 152 | |||||||
| 153 | =item * Search CPAN | ||||||
| 154 | |||||||
| 155 | L |
||||||
| 156 | |||||||
| 157 | =back | ||||||
| 158 | |||||||
| 159 | |||||||
| 160 | =head1 ACKNOWLEDGEMENTS | ||||||
| 161 | |||||||
| 162 | |||||||
| 163 | =head1 LICENSE AND COPYRIGHT | ||||||
| 164 | |||||||
| 165 | Copyright 2016 Ken Peng. | ||||||
| 166 | |||||||
| 167 | This program is free software; you can redistribute it and/or modify it | ||||||
| 168 | under the terms of either: the GNU General Public License as published | ||||||
| 169 | by the Free Software Foundation; or the Artistic License. | ||||||
| 170 | |||||||
| 171 | See http://dev.perl.org/licenses/ for more information. | ||||||
| 172 | |||||||
| 173 | |||||||
| 174 | =cut | ||||||
| 175 | |||||||
| 176 | 1; # End of Email::Send::YYClouds |