[#37660] cron から呼ぶ ruby スクリプト中で require "postgres" できません — FUJII Hideo <hid@...>
こんばんは。藤井と申します。
7 messages
2003/05/08
[#37673] [ANN] Exerb/Exerb-CC 2.6.5 — Yuya Kato <yuya-ml@4th.to>
今日が誕生日のYuyaです。
1 message
2003/05/11
[#37678] [TMail] Fromのパースについて — Ken-ichi HASHIMOTO <ken@...>
橋本です。
9 messages
2003/05/15
[#37694] TMail : RFC2231エンコードについて — murakami tamiyasu <murakami-tamiyasu@...>
村上と申します。
8 messages
2003/05/19
[#37706] setuidと$SAFE — sakazuki <QZS01353@...>
こんにちは。sakazukiです。
8 messages
2003/05/20
[#37737] missing/erf.c — NISHIMATSU Takeshi <t-nissie@...>
西松と申します.
11 messages
2003/05/30
[#37738] Re: missing/erf.c
— matz@... (Yukihiro Matsumoto)
2003/05/30
まつもと ゆきひろです
[#37739] Re: missing/erf.c
— NISHIMATSU Takeshi <t-nissie@...>
2003/05/31
西松です.
[#37740] Re: missing/erf.c
— matz@... (Yukihiro Matsumoto)
2003/05/31
まつもと ゆきひろです
[#37741] Re: missing/erf.c
— NISHIMATSU Takeshi <t-nissie@...>
2003/06/01
西松です.
[ruby-list:37637] Re: net/pop.rbにUIDLコマンドでMessage-Idのリストを取得するメソッド
From:
"Keisuke Minami" <keisuke@...>
Date:
2003-05-01 04:22:01 UTC
List:
ruby-list #37637
三並です。 > > > > 実は 1.8 では既に POP3#uidl と POPMail#uidl が実装されています。 > > > > > どうも、UIDLコマンドでは、1つのメールの情報を取る機能しかないようです。 > > > > あっと、すみません。実装したような気がしてたんですが、 > > ないですね。追加しときます。 > > と思ったんですが考えなおしました。三並さんの実装だと > POP3#list_mid は UID の配列 (そのインデックスはメール番号) > を返しますが、これでは二つの点でまずいように思います。 > > * 返り値の形式が使いにくい (nilが混じる可能性が高い) > * 必ずしも通信量が最小にならない (中略) > * 一度でも UIDL を引数なしで呼んだら UIDL コマンドは > 二度と発行してはならない > > はずです。 > > で、長くなりましたが、まず POP3#list_mid が欲しくなった > 理由をお聞きたいのです。それによって実装を変えようと思います。 もともとの理由は、POP上でIMAPのように、 uidを指定して、特定のメール情報だけを読み出したかったので、 POP3#list_midが欲しくなりました。 #何をとぼけていたのか、retrもあわせて外部から呼べないと #意味が無いことに、さっき気がつきました。 メールクライアント内の実装としては、 以下のようにして、先にメールの一覧を作っておき、 pop = Net::POP3.APOP(apop]).new(server, port) pop.mails.each do |m| m_id = m.uidl m_header = m.header # リストを作る end ユーザーからのリクエストで、特定のメールの内容だけ引っ張り出すような ことを行おうと考えていました。 (以下のコードは仮です) def get_mail_body(uid) mids_hash = pop.list_mid mids_hash.each do |no, mid| if mid == uid mail_data = pop.retr(no) end end mail_data end POP3プロトコルの仕様上、メールの一覧を取得するのに無駄が多いのはしょうがないのですが、 特定のひとつのメールだけを取り出すには、UIDLとRETRを組み合わせるだけで うまく行くと思ったのです。 理想的には、net/pop.rb側で、 > * 一度でも UIDL を引数なしで呼んだら UIDL コマンドは > 二度と発行してはならない まで実装されるのが、理想かとは思いますが、 POP3コマンドのコマンドの直接呼び出し用の 低レベルインターフェースの実装だけでも 十分事足りるかもしれないです。 では。