2009年02月19日
最新版はgithubにありますのでそちらをどうぞ。(モジュール名かわってますが。。。)
xaicron's send-gmail-simple at master - GitHub
メールの送信 - モダンなPerl入門 - モダンなPerl入門
を見ながらEmail::Send::Gmailを使ってGmailからメール送信しようとしてみたけど、なんかようわからなかった。
- CCが送れない
- Bccが送れない
- 添付ファイルがめんどくさい
- 添付ファイル送れたと思ったら壊れてた
下記みたいなコードを書いてみたけどCC入れると「Error sending email: Email::Send::Gmail: no valid recipients」とか。
CC入れなかったり、添付ファイル送らなかった場合はちゃんといける。
#!/usr/bin/perl use strict; use warnings; use utf8; use Encode; use Email::Send; use Email::Send::Gmail; use Email::MIME; use Email::MIME::Creator; use File::Slurp qw/slurp/; my $jis = find_encoding 'ISO-2022-JP'; my $from = 'from@gmail.com'; my $to = 'to@example.com', my $cc = 'cc@example.com'; my $email = Email::MIME->create( header => [ From => $from, To => $to, CC => $cc, # これ入れるとエラー Subject => encode('MIME-Header-ISO_2022_JP', 'PerlからGmailでメール送信'), ], parts => [ $jis->encode('元気でやってるかー?'), # 悲しいことにちゃんと送れない添付ファイル Email::MIME->create( attributes => { filename => '../temp.jpg', content_type => 'application/octet-stream', encoding => 'Base64', name => $jis->encode('ちょっとえろい.jpg'), }, body => slurp('../temp.jpg'), ), ], ); my $sender = Email::Send->new({ mailer => 'Gmail', mailer_args => [ username => $from, password => 'password', ], }); eval { $sender->send($email) }; die "Error sending email: $@" if $@;
____ / \ / ─ ─\ / ⌒ ⌒ \ ハハッ 使い方わからん | ,ノ(、_, )ヽ | \ トェェェイ / / _ ヽニソ, く
バカだから簡単に使えそうなモジュール書く
Net::SMTP::SSLとMIME::Entityでしこしこ書いた結果、なんかできた。
#!/usr/bin/perl use strict; use warnings; use utf8; use Encode; use Email::Gmail::Send; my $jis = find_encoding 'ISO-2022-JP'; my $username = 'from@gmail.com'; my $gmail = Email::Gmail::Send->new( username => $username, password => 'XXXXXX', # Debug => 1, ); $gmail->send( From => $username, TO => 'to@example.com', CC => ['cc@example.com', 'cc2@example.com'], BCC => ['bcc@example.com', 'bcc2@example.com'], Subject => encode('MIME-Header-ISO_2022_JP', 'Gmailで添付ファイル送信テスト'), Body => $jis->encode('ちゃんと添付ファイルが送れるかな・・・?' ), Parts => [ { Path => '../temp.csv', Name => $jis->encode('しょぼい.csv') }, { Path => '../temp.jpg' }, ], ) or die $gmail->errstr;
とりあえずガシガシ羅列していく感じ。
- モジュール名がひどい
- TO、CC、BCCに複数のアドレス指定できる
- Partsのところに添付ファイルを書く
- ファイル名を省略したら中でbasenameするだけ
- つまり日本語扱うなら明示的にencodeして指定
- モジュール名がひどい
一つ注意点があって、Net::SMTPの中でAuthen::SASLをevalして呼んでて、なんか読み込めなくてもエラー吐かずに死にます。
Authen::SASLがインストールされてれば平気。
続きにModule置いときます。(ていうの早く辞めたいのでCodeReposかGitHubしる)
Email::Gmail::Send
たぶんもっといいモジュールいっぱいある
package Email::Gmail::Send; use strict; use warnings; use utf8; use Carp qw/croak/; use Net::SMTP::SSL; use MIME::Entity; use Email::Date::Format; use File::Basename qw/basename/; our $VERSION = '0.01'; sub new { my $class = shift; my $die_msg = "Usage: $class->new(username => \$username, password => \$password)"; my %args = @_; croak $die_msg unless $args{username}; croak $die_msg unless $args{password}; bless {%args}, $class; } sub send { my $self = shift; my $die_msg = "Usage: $self->send(From => \$from, TO => \$to, Subject => \$subject, Body => \$body)"; my %args = @_; croak $die_msg unless $args{From}; croak $die_msg unless $args{TO}; croak $die_msg unless $args{Subject}; croak $die_msg unless $args{Body}; $args{Data} = $args{Body}; delete $args{Body}; my $mime = MIME::Entity->build( Date => Email::Date::Format::email_date, Type => 'text/plain; charset="ISO-2022-JP"', Encoding => '7bit', %args, ); if ($args{Parts}) { for my $hash (@{$args{Parts}}) { croak "Usage: $self->send(Parts => [ {Path => \$file_path, Name => \$file_name}, { ... } ])" unless $hash->{Path}; $mime->attach( Path => $hash->{Path}, Filename => $hash->{Name} || basename($hash->{Path}), Type => 'application/octet-stream', Encoding => 'Base64', ) } } my $smtp = Net::SMTP::SSL->new( 'smtp.gmail.com', Port => 465, Debug => $self->{Debug} || 0, Timeout => $self->{Timeout} || 15, ) or die "Net::SMTP::SSL->new failed!!"; if ($smtp->auth($self->{username}, $self->{password})) { $smtp->mail($args{FROM}); $smtp->to(&_deref($args{TO})); $smtp->cc(&_deref($args{CC})) if $args{CC}; $smtp->bcc(&_deref($args{BCC})) if $args{BCC}; $smtp->data(); $smtp->datasend($mime->stringify); $smtp->dataend; $smtp->quit; } else { $self->{error} = "send e-mail failure ($args{TO})"; return 0; } return 1; } sub errstr { return shift->{error}; } sub _deref { my $arg = shift; return ref $arg eq 'ARRAY' ? @{$arg} : $arg; } 1; __END__ =head1 NAME Email::Gmail::Send - Very simple Gmail sending interface. =head1 SYNOPSIS use Email::Gmail::Send; my $gmail = Email::Gmail::Send->new( username => 'username', password => 'password', ); $gmail->send( From => $from, TO => $to, CC => [$cc, $cc2], BCC => [$bcc, $bcc2], Subject => 'hello gmail', Body => 'agyagyagyagya', Parts => [ { Path => '/home/hoge/erogazo/HENTAI.jpg', Name => 'Abnormal.jpg' }, { Path => '/home/fuga/HENTAI.jpg' }, ], ) or die $gmail->errstr; =head1 DESCRIPTION Email::Gmail::Send is Very simple Gmail sending interface. You can also send attachments in multipart. Of course, TO CC and BCC can also specify more than one. =head2 Methods =over =item new Constructor =item send send =item errstr return error message =back =head1 AUTHOR Yuji Shimada E<lt>xaicron {at} gmail.comE<gt> =head1 SEE ALSO L<MIME::Entity> L<Net::SMTP::SSL> L<Authen::SASL> =head1 LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut
PODの書き方よくわからず
コメント一覧
1. Posted by kata cinta 2013年12月21日 03:26
この記事は非常に良いですが、それでは書き続けるし、うまくいけば、このブログが成功になりましょう!
2. Posted by oke seo 2014年02月22日 04:07
これは良いニュースですが、私は読んでいる
3. Posted by diakui 2014年02月26日 08:04
このウェブサイトの私の忠実な読者と再び会うおはようございます!
4. Posted by kata kata cinta 2014年03月07日 19:56
私はあなたのブログ、非常に良い記事と非常に便利であることがとてもうれしいです。
5. Posted by kata kata bijak 2014年03月07日 19:57
私はあなたのブログ、非常に良い記事と非常に便利であることがとてもうれしいです。
6. Posted by cara menghilangkan jerawat 2014年03月09日 22:23
本当に良い品は、私がこのブログであることが幸せです。
7. Posted by kata kata galau 2014年03月25日 18:17
このブログに興味深い記事が、私はこのブログであることがとてもうれしいです。
8. Posted by dp bbm bergerak 2014年03月25日 18:18
私はこのブログの記事を読みましたし、私の知識は非常に有用であり、私はこのブログが大好きです。
9. Posted by kata kata romantis 2014年04月02日 05:44
私はあなたが提示情報を愛するの上、上記の情報を共有していただきありがとうございます
10. Posted by kata kata cinta 2014年04月21日 22:05
本当に良い品は、私がこのブログであることが幸せです。
11. Posted by Cerita Lucu 2014年04月24日 15:14
このウェブサイトの私の忠実な読者と再び会うおはようございます!
12. Posted by tempat wisata di bandung 2014年05月08日 02:13
これは実際に読むことは非常に興味深い記事です!
更新された場合に、より良く、より面白いかもしれ
更新された場合に、より良く、より面白いかもしれ
13. Posted by kata kata motivasi 2014年05月09日 22:24
この記事は非常に良いですが、それでは書き続けるし、うまくいけば、このブログが成功になりましょう
14. Posted by kata kata galau 2014年05月09日 22:25
これは良いニュースですが、私は読んでいる
15. Posted by status fb 2014年05月09日 22:28
私はかなり理解していないが、このブログは非常にシンプルで興味深い情報ですが。ありがとう
16. Posted by blog remaja indonesia 2014年05月11日 04:41
私はあなたが提示情報を愛するの上、上記の情報を共有していただきありがとうございます
17. Posted by operatorku 2014年05月12日 19:01
私はあなたのブログ、非常に良い記事と非常に便利であることがとてもうれしいです
18. Posted by kata kata indah 2014年05月31日 16:56
私はあなたのブログ、非常に良い記事と非常に便利であることがとてもうれしいです。
19. Posted by cara menghilangkan jerawat 2014年06月03日 07:52
私はあなたが提示情報を愛するの上、上記の情報を共有していただきありがとうございます
20. Posted by kata kata lucu 2014年06月03日 07:55
これは良いニュースですが、私は読んでいる
21. Posted by dunia remaja 2014年06月04日 08:53
非常に記事ここに有用な情報をたくさん見つける幸いです
22. Posted by kata kata cinta 2014年06月04日 20:13
これは良いニュースですが、私は読んでいる
23. Posted by pembaca 2014年06月10日 19:26
私はこのブログの記事を読みましたし、私の知識は非常に有用であり、私はこのブログが大好きです。
24. Posted by kata kata cinta romantis 2014年06月11日 02:19
非常に素晴らしいのニュース、インドネシアの国民の成功を読み、挨拶、私たちへの書き込みをありがとうございました
25. Posted by kata kata mutiara 2014年06月16日 05:27
ありがとうございます、あなたの文章が読み、非常に良いと面白いです
26. Posted by kata kata bijak 2014年06月16日 10:22
このブログに興味深い記事が、私はこのブログであることがとてもうれしいです。
27. Posted by saatnya 2014年06月17日 10:53
観察する良いニュースと面白い!
28. Posted by kata kata cinta 2014年06月19日 07:50
非常に興味深い記事、私はこの記事を投稿してくれてありがとう、私は最新の記事を待っています、それを読むことは非常に満足しています。
29. Posted by kata kata galau 2014年06月26日 16:19
私はあなたが提示情報を愛するの上、上記の情報を共有していただきありがとうございます
30. Posted by dunia remaja 2014年07月08日 20:38
本当に良い品は、私がこのブログであることが幸せです。
31. Posted by resep kue 2014年07月14日 02:46
素晴らしい記事、ありがとうございました
32. Posted by kumpulan kata kata cinta romantis buat pacar 2014年07月19日 16:06
このブログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足しています
33. Posted by jasa fotocopy murah 2014年09月05日 15:25
読み素敵で面白いの書き込み、ありがとうございました
34. Posted by hadirkanlah 2014年09月14日 23:08
私はあなたのブログ、非常に良い記事と非常に便利であることがとてもうれしいです。
35. Posted by kata kata galau 2014年09月20日 13:50
これは良いニュースですが、私は読んでいる
36. Posted by kata kata gombal 2014年09月24日 09:27
読み素敵で面白いの書き込み、ありがとうございました
37. Posted by jasa fotocopy murah 2014年09月25日 18:55
書き込みは、注意することは興味深い
38. Posted by tempat fotocopy dan percetakan murah di jakarta 2014年09月26日 22:09
注意することは興味深く、良いニュースは、ありがとう
39. Posted by kata kata galau 2014年10月03日 17:05
このブログに興味深い記事が、私はこのブログであることがとてもうれしいです。
40. Posted by uda rino 2014年10月24日 03:08
ジャカルタの安いコピーや印刷の専門家
41. Posted by kata kata galau 2014年10月25日 02:40
本当に良い品は、私がこのブログであることが幸せです。
42. Posted by kata kata bijak 2014年10月30日 21:15
賢明に言葉は美しい言葉です
43. Posted by kata kata galau sedih 2014年11月01日 03:53
観察する良いニュースと面白い!
44. Posted by kata kata cinta 2014年11月12日 02:03
I’ve visited many blogs,forums, but this time:How your fantastic forum is . It makes me surprise….
45. Posted by dp bbm lucu 2014年11月27日 01:10
うとしてみたけど、なんかようわからなかった。
46. Posted by kata kata galau 2014年12月08日 05:05
素晴らしい記事、ありがとうございました
47. Posted by fotocopy murah jakarta 2014年12月09日 20:24
良いコンテンツに従うことは非常に簡単。私たちは、このポストを手に取る読んで概説ポイントを実装する必要があります。
48. Posted by hadirkanlah 2014年12月12日 22:24
このブログに興味深い記事が、私はこのブログ
49. Posted by kata kata galau 2014年12月13日 08:27
読み素敵で面白いの書き込み、ありがとうございまし
50. Posted by 修学旅行水着 2015年01月12日 00:31
10616h、2Cで書か書今) 栗h、2Cで書か書
51. Posted by batu akik 2015年01月31日 15:37
私は本当にあなたのよく書かれた記事を読んで楽しんだ。あなたのブログに努力と多くの時間を過ごすように見えます。
52. Posted by KATA KATA TERLENGKAP 2015年03月31日 23:26
このブログに興味深い記事が、私はこのブログであることがとてもうれしいです。
53. Posted by Kata Kata Cinta 2015年04月28日 12:51
私たちは、このポストを得るために取る読んで概説ポイントを実装する必要があります。
54. Posted by プール 水着 2015年05月27日 15:03
で分オゥ全仏オ
55. Posted by Cetak kartu ucapan murah 2015年06月05日 02:46
このブログに興味深い記事が、私はこのブログであることがとてもうれしいです。
56. Posted by Jasa Cetak Stempel Warna (Mark Stamp) Murah di Rawamangun Jakarta 2015年06月05日 02:47
私は本当にあなたのよく書かれた記事を読んで楽しんだ。あなたのブログに努力と多くの時間を過ごすように見えます。
57. Posted by DJ Exodus™ ( House Musik Dugem Nonstop Paling Terbaru dan terupdate ) 2015年07月03日 07:58
それでは書き続けるし、うまくいけば、このブログが成功になりましょう...
58. Posted by kata kata sakit hati 2015年08月06日 21:44
これは、シャープでクリアな非常インフォマティクス、です。私は読者が最大の情報を得ることができるようにすべてが体系的に説明してきたと思います。
59. Posted by Percetakan Online 2015年11月12日 01:42
それでは書き続けるし、うまくいけば、このブログが成功になりましょう...
60. Posted by cetak yasin online 2015年12月29日 16:49
これは、シャープでクリアな非常インフォマティクス、です。私は読者が最大の情報を得ることができるようにすべてが体系的に説明してきたと思います。
61. Posted by Style Masa Kini 2016年01月23日 22:16
このウェブサイトの私の忠実な読者と再び会うおはようございます!
62. Posted by Kata kata mutiara cinta 2016年01月26日 06:15
これは実際に読むことは非常に興味深い記事です!
更新された場合に、より良く、より面白いかもしれ
更新された場合に、より良く、より面白いかもしれ
63. Posted by Kata Kata Remaja 2016年03月06日 23:25
私はあなたのブログ、非常に良い記事と非常に便利であることがとてもうれしいです
64. Posted by Jasa Percetakan dan Jasa Fotocopy Murah 24 Jam Rawamangun Jakarta 2016年03月31日 01:09
これは、シャープでクリアな非常インフォマティクス、です。私は読者が最大の情報を得ることができるようにすべてが体系的に説明してきたと思います。
65. Posted by Kata Kata Remaja 2016年04月11日 00:24
私はかなり理解していないが、このブログは非常にシンプルで興味深い情報ですが。ありがとう
66. Posted by Kata Kata Remaja 2016年05月10日 01:34
これは、シャープでクリアな非常インフォマティクス、です。私は読者が最大の情報を得ることができるようにすべてが体系的に説明してきたと思います
67. Posted by Kata Kata Remaja 2016年06月08日 06:32
共有のおかげで、この素晴らしい記事、うまくいけば、この口コミは役に立ちました、私たちのすべてのために有用であり得ます!!!!
68. Posted by Jasa Percetakan dan Jasa Fotocopy Murah 24 Jam Rawamangun Jakarta 2016年06月21日 06:10
これは、シャープでクリアな非常インフォマティクス、です。私は読者が最大の情報を得ることができるようにすべてが体系的に説明してきたと思います
69. Posted by Kata Kata Remaja 2016年07月29日 13:56
私はかなり理解していないが、このブログは非常にシンプルで興味深い情報ですが。ありがとう
70. Posted by Kata Kata Mutiara 2016年08月03日 02:44
共有のおかげで、この素晴らしい記事、うまくいけば、この口コミは役に立ちました、私たちのすべてのために有用であり得ます!!!!
71. Posted by Kata Kata Cinta 2016年08月13日 19:36
私は本当にあなたのよく書かれた記事を読んで楽しんだ。あなたのブログに努力と多くの時間を過ごすように見えます。
72. Posted by Kata Kata Galau 2016年10月01日 19:39
これは、シャープでクリアな非常インフォマティクス、です。私は読者が最大の情報を得ることができるようにすべてが体系的に説明してきたと思います。
73. Posted by Percetakan dan Fotocopy Murah Di Rawamangun 2016年10月11日 02:21
これは、シャープでクリアな非常インフォマティクス、です。私は読者が最大の情報を得ることができるようにすべてが体系的に説明してきたと思います
74. Posted by Kata Kata Bijak 2016年10月12日 18:46
共有のおかげで、この素晴らしい記事、うまくいけば、この口コミは役に立ちました、私たちのすべてのために有用であり得ます!!!!
75. Posted by Blog Remaja Indonesia 2016年10月20日 01:01
私は本当にあなたのよく書かれた記事を読んで楽しんだ。あなたのブログに努力と多くの時間を過ごすように見えます。
76. Posted by Materi Pelajaran 2017年02月10日 17:17
私はそれを知っています。 あなたがそれらの貴重な情報を共有していないなら、私はそれを知らないでしょう。 皆ありがとう。 より多くの情報を共有する。 そのような良い仕事!
77. Posted by Flora Fauna 2017年02月23日 14:22
私はこのウェブサイトを探検しています。 そして、私はあなたがそのような驚くべき作品をその中にどのように置いているのか驚いた 共有し続ける。 共有は思いやりがあるので。
78. Posted by Mata Pelajaran 2017年03月14日 15:09
共有していただきありがとうございます。 もっと共有する。 共有は思いやりです。
79. Posted by Tebak Tebakan Lucu 2017年04月20日 10:44
このウェブサイトでいくつかの記事を読んだ後。 私はこのウェブサイトを信頼性の高い参考文献の1つにしたいと考えています。 あなたはこのウェブサイトで素晴らしい仕事をしました。
80. Posted by Belajar Bahasa Inggris 2017年04月26日 15:03
ニースウェブサイト! それは容易に理解される多くの不正行為の記事を含んでいる。 より多くの記事を共有してください!
81. Posted by Zona Siswa 2017年05月23日 04:18
この情報をお寄せいただきありがとうございます。 そして分かち合う!
82. Posted by pasang iklan gratis 2017年05月31日 13:46
あなたが提供する情報は非常に有用です
83. Posted by Pantun Betawi 2017年07月13日 15:24
あなたはこのトピックで一番です。 共有し続ける。
84. Posted by Geografi 2017年07月14日 23:16
どうもありがとうございました。
85. Posted by MURNI JAYA Printing 2017年09月27日 10:31
にあなたのよく書かれた記事を読んで楽しんだ。あなたのブログに努力と多くの時間を過ごす
86. Posted by DJ Hepero Anyer (Free Download Lagu Mp3 Dugem House Music Nonstop Remix Terbaru) 2017年11月26日 08:03
このウェブサイトでいくつかの記事を読んだ後。 私はこのウェブサイトを信頼性の高い参考文献の1つにしたいと考えています。 あなたはこのウェブサイトで素晴らしい仕事をしました。
87. Posted by PERCETAKAN ANGKASA GRAFIKA 2017年11月30日 21:50
にあなたのよく書かれた記事を読んで楽しんだ。あなたのブログに努力と多くの時間を過ごす
88. Posted by AZ Sejarah 2017年12月20日 21:54
私はこのブログの最新記事を待つことはできません。
89. Posted by DJ HENDRA R 2018年01月30日 23:43
にあなたのよく書かれた記事を読んで楽しんだ。あなたのブログに努力と多くの時間を過ごす
90. Posted by Free Download Lagu Mp3 Remix Breakbeat Mixtape House Music Nonstop Remix Terbaru Dj Leymon 2018年04月17日 05:36
ニースウェブサイト! それは容易に理解される多くの不正行為の記事を含んでいる。 より多くの記事を共有してください!
91. Posted by Download Lagu Musik Mp3, Barat, Islami, Minang, Musik Dj Terbaru dan Terpopuler 2018年05月18日 23:58
私はこのブログの最新記事を待つことはできません。
92. Posted by DJ Hepero Anyer ( Kumpulan House musik Dugem Nonstop Remix Terbaru dan terupdate ) 2018年05月25日 08:11
ニースウェブサイト! それは容易に理解される多くの不正行為の記事を含んでいる。 より多くの記事を共有してください!
93. Posted by Free Download Lagu Mp3 Dugem House Music Nonstop Remix Terbaru 2018年06月04日 05:56
このウェブサイトでいくつかの記事を読んだ後。 私はこのウェブサイトを信頼性の高い参考文献の1つにしたいと考えています。 あなたはこのウェブサイトで素晴らしい仕事をしました。
94. Posted by Print Percetakan Fotocopy Murah Dan Cepat Layanan 24 Jam Jakarta 2018年06月13日 08:22
私は本当にあなたのよく書かれた記事を読んで楽しんだ。あなたのブログに努力と多くの時間を過ごすように見えます。
95. Posted by Cetak Buku Murah Jakarta Timur 2018年07月30日 22:45
私はこれに非常に感銘を受けました。すべては非常に明確な分類と非常にオープンです。
96. Posted by Free Download Lagu Mp3 Dugem House Music Nonstop Remix Terbaru 2018年11月04日 23:43
私はこのブログの最新記事を待つことはできません。
97. Posted by Jasa Fotocopy dan print Murah Cepat Layanan 24 Jam Jakarta 2018年11月19日 14:45
にあなたのよく書かれた記事を読んで楽しんだ。あなたのブログに努力と多くの時間を過ごす
98. Posted by herfistore 2018年12月22日 05:46
あなたが提供した情報を私は喜んで受け取ります
99. Posted by pramuka baru printing 2023年04月07日 01:50
にあなたのよく書かれた記事を読んで楽しんだ。あなたのブログに努力と多くの時間を過ごす
100. Posted by Jasa Print Online 24 Jam Jakarta 2023年04月07日 01:54
このウェブサイトでいくつかの記事を読んだ後。 私はこのウェブサイトを信頼性の高い参考文献の1つにしたいと考えています。 あなたはこのウェブサイトで素晴らしい仕事をしました。
101. Posted by Jasa Cetak, Print dan Fotocopy Murah Layanan 24 jam Kelapa Gading Jakarta Utara 2023年07月18日 22:48
私は本当にあなたのよく書かれた記事を読んで楽しんだ。あなたのブログに努力と多くの時間を過ごすように見えます。