2009-06-04
■はてブのWeb Hookで指定したタグが含まれていたらメールする
のを軽く作ってみた。
#!/usr/bin/env perl package Email; use Moose; use Moose::Util::TypeConstraints; use utf8; use Encode; use Email::MIME; use Email::MIME::Creator; use Email::Send; use Email::Valid::Loose; subtype 'MailAddr' => as 'Str' => where { Email::Valid::Loose->address($_) }; has 'from' => (is => 'rw', isa => 'MailAddr', default => 'webhook@hoge.com'); has 'to' => (is => 'rw', isa => 'MailAddr', default => 'to@hoge.com'); has 'subject' => (is => 'rw', isa => 'Str', required => 1); has 'body' => (is => 'rw', isa => 'Str', required => 1); sub run { my $self = shift; my $mail = Email::MIME->create( header => [ From => $self->from, To => $self->to, Subject => Encode::encode('MIME-Header-ISO_2022_JP', $self->subject), ], parts => [ encode('iso-2022-jp', $self->body), ], ); my $sender = Email::Send->new( { mailer => 'Sendmail' } ); $sender->send($mail); } __PACKAGE__->meta->make_immutable; package main; use strict; use warnings; use utf8; use CGI; use Encode; my $target_tag = 'tag'; my $q = CGI->new; print $q->header(-type=>'text/plain', -charset=>'utf-8'); if ( $q->param('key') ne 'APIKEY' ) { die "Authentication failed"; } elsif ( $q->param('status') ne 'add') { die "This program operates only when additional bookmark."; } my $url = $q->param('url'); my $title = $q->param('title'); my $comment = $q->param('comment'); my @tags; while ($comment =~ m!\[([^\:\[\]]+)\]!g) { push @tags, $1; } #指定したタグを含んでいない場合はメールを送信しない。 die "finished." unless grep /$target_tag/, @tags; my $body = <<'__MESSAGE__'; $title $url $comment __MESSAGE__ my $subject = "タグ[$target_tag]を含む新規ブックマーク"; my $sender = Email->new( to => 'fuba@fuba.com', from => 'fuba_recorder@fuba.com', subject => $subject, body => $body, ); $sender->run; print 'OK';
トラックバック - http://d.hatena.ne.jp/jazzanova/20090604/1244098936
リンク元
- 212 http://ezsch.ezweb.ne.jp/search/?sr=0101&query=円高
- 104 http://ezsch.ezweb.ne.jp/search/ezGoogleMain.php?query=円高&start-index=4&adpage=3&mode=02
- 41 http://tako3.com/http://twitter.com/jazzanova
- 33 http://pipes.yahoo.com/pipes/pipe.info?_id=rPi83IO_3BGddhQIGsevXg
- 26 http://ezsch.ezweb.ne.jp/search/?sr=0401&query=円高
- 18 http://d.hatena.ne.jp/
- 18 http://reader.livedoor.com/reader/
- 14 http://ezsch.ezweb.ne.jp/search/ezGoogleMain.php?query=粉瘤+抜糸+後&start-index=4&adpage=3&mode=02
- 13 http://b.hatena.ne.jp/jazzanova/
- 11 http://search.yahoo.co.jp/search?p=粉瘤+手術&search_x=1&tid=top_ga1_sa&ei=UTF-8&aq=0&oq=ふん&yuragi=off&qrw=0&pstart=1&fr=top_ga1_sa&b=21
