ぽっぺん日記@karashi.org
2007-09-21(Fri) [長年日記]
_ MIME::Liteのバージョンを上げたらP::P::P::Gmailが動かなくなったのでpatchを書いた
久しぶりにplaggerを動かしているホストでportupgradeしたところ、Plagger::Plugin::Publish::Gmailが
Plagger::Plugin::Publish::Gmail [error] Error while sending emails: Undefined subroutine &MIME::Lite::extract_addrs called at C:/Perl/site/lib/Plagger/Plugin/Publish/Gmail.pm line 217.
というエラーを吐くようになってしまった。
で、調べてみたところ、どうやらMIME::Lite::extract_addrsがMIME::Lite::extract_full_addrsにrenameされたのが原因ぽいので、patchを書いてみた。
--- Gmail.pm.orig Fri Sep 21 22:31:16 2007
+++ Gmail.pm Sat Sep 22 00:22:34 2007
@@ -211,21 +211,25 @@
# hack MIME::Lite to support TLS Authentication
*MIME::Lite::send_by_smtp_tls = sub {
my($self, @args) = @_;
+ my $extract_addrs_ref =
+ defined &MIME::Lite::extract_addrs
+ ? \&MIME::Lite::extract_addrs
+ : \&MIME::Lite::extract_full_addrs;
### We need the "From:" and "To:" headers to pass to the SMTP mailer:
my $hdr = $self->fields();
- my($from) = MIME::Lite::extract_addrs( $self->get('From') );
+ my($from) = $extract_addrs_ref->( $self->get('From') );
my $to = $self->get('To');
### Sanity check:
defined($to) or Carp::croak "send_by_smtp_tls: missing 'To:' address\n";
### Get the destinations as a simple array of addresses:
- my @to_all = MIME::Lite::extract_addrs($to);
+ my @to_all = $extract_addrs_ref->($to);
if ($MIME::Lite::AUTO_CC) {
foreach my $field (qw(Cc Bcc)) {
my $value = $self->get($field);
- push @to_all, MIME::Lite::extract_addrs($value) if defined($value);
+ push @to_all, $extract_addrs_ref->($value) if defined($value);
}
}
酔った勢いで#plagger-jaで報告してみたら、miyagawaさんから、このパッチだと古いMIME::Liteで動かなくなると指摘を頂いた
確かに。
で、miyagawaさんの提案が以下の通り。
23:58 (miyagawa_) my $sub = defined &MIME::Lite::extract_addrs ? \&MIME::Lite::extract_addrs : \&MIME::Lite::extract_full_addrs; 23:58 (miyagawa_) $sub->()
なるほどー。Perlでは、こう書くんだな。すげー勉強になる。
ちょっと、今は酔っているので、あとで上のパッチを見直そう。書き直した。
書き直してみた
新旧のMIME::Liteに対応できたはず。
追記
HTMLメールのレイアウトが崩れるようになってしまったので、結局、 MIME::Liteのバージョンを3.01へ戻した。
[]
本日のPingbacks(全0件)



まで頂ければ幸いです。
機動戦士ガンダム THE ORIGIN (17) ララァ編・前 (角川コミックス・エース 80-20)(安彦 良和)
極道めし 3 (3) (アクションコミックス) (アクションコミックス)(土山 しげる)
数学で犯罪を解決する(キース・デブリン/ゲーリー・ローデン)
千の嘘 (創元推理文庫 M ウ 16-1)(ローラ・ウィルソン)
はじめまして。plagger初心者です。<br>Windows環境でPlaggerを試してみようと試行錯誤していました。<br>よく分からなくて、モジュールのバージョンアップ等をしているうちに、どうしても解決できないエラーメッセージが出てきてしまいました。<br>しかし、こちらのサイトのおかげで、解決することができました。<br>ありがとうございました。
遅くなりましたが、commit させていただきました。<br>http://plagger.org/trac/changeset/1994
commit ありがとうございます。 > tokuhirom 様