仕事上でわかったことのうち顧客に関わる情報が無い物、一般公開して差し障りのなさそうな事をたまーに投稿しています。 ちなみに、記事上に載せた私が書いたコードは、用途問わず再利用いただいてかまいませんが、保障は一切いたしませんので、あしからず。 ですます調の記事とである調の記事が混ざりますが..こちらも、あしからず。
Translate
2012年1月12日木曜日
Gmail POP の怪
※まだ解決してません
うーん、
Gmailをjavamail1-4.4を使ってメッセージ取得
をためしたけど、250件づつしかできない..
あるWebアプリを運営していて結果を
所定のGmailアカウントへ送信していて
1万件くらいたまったので、
JavaMail APIを使ってCSVファイル化するプログラムを組んで
INBOX内のメールの本文を読み取る処理を書き実行した..
JavaMailサンプル
// POPサーバへ接続するための情報をPropertiesへセットする
Properties mailProps = new Properties();
// Gmailへ接続する場合のサーバFQDN
mailProps.setProperty("mail.pop3.host","pop.gmail.com");
// GmailはPOP3sのようだ
mailProps.setProperty("mail.pop3.port", "995");
// 接続時のタイムアウト
mailProps.setProperty("mail.pop3.connectiontimeout", "60000");
// POP3通信中タイムアウト
mailProps.setProperty("mail.pop3.timeout", "60000");
// POP3sなのでSSLSocketFactoryを指定
mailProps.setProperty("mail.pop3.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
mailProps.setProperty("mail.pop3.socketFactory.fallback", "false");
mailProps.setProperty("mail.pop3.socketFactory.port", "995");
// javax.mailのセッションインスタンス取得
Session mailSession = Session.getInstance(mailProps,
new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
"hogehoge@gmail.com", "hogehoge_password");
}
}
);
// デバッグモードをTRUEにするとSystem.errにたくさんログが出る
// RETRIEVE後既読にならなかった
mailSession.setDebug(false);
// POP3接続し、ストアオブジェクト取得
Store store = mailSession.getStore("pop3");
// 接続(認証)
store.connect();
// finally句で使うので宣言だけ
Folder folder = null;
try{
// INBOX=受信トレイで決め打ちらしい
folder = store.getFolder("INBOX");
// このサンプルはRETRIEVEだけなので読み取り専用
folder.open(Folder.READ_ONLY);
// 取得可能件数(たくさん未読メールがある場合、
// 私の環境では毎回250件)
int total = folder.getMessageCount();
for(int pos=0;pos<total;pos++){
// getMessageのポジションは1から始まる
Message message = folder.getMessage(pos+1);
// messageからサブジェクトやコンテンツを取得する処理
}
}finally{
folder.close(false);
}
..んだけど、
Folder#getMessageCount()しても毎回250が帰ってきて
なんでか250件づつしかとれない。
取得した250件も
古いメッセージから順番になってる。
#javamailデバッグモードだとおなじメール範囲
うーん、一度に250件とかの制約がサーバにあるのかな..
..Googleってみると同じようなことを考えている人はいる様子
英語のサイトでも
明確な答えを出してる所が見つからない..
たとえばこんなのとか..
Is there a 250 messages limit when do pop?
http://www.google.com/support/forum/p/gmail/thread?tid=4e95906f3f8cad33&hl=en
これは勝手な憶測だけど、
Gmail側がPOPサーバの負荷を考慮して
制限をつけていて
制限値については公表していない
というところかもしれない。
結局バッチプログラム化して40回ぶんまわして対応した..
AppEngineで作ったアプリなので
BigTableに入れるよりかわPOPで吸い出しのほうが
楽かなと思ったけど..
登録:
コメントの投稿 (Atom)
ClaudeをOpenAI O1のように思考させるDifyサンプルを試す
Difyの「探索」タブにはさまざまなサンプルが載っており、その1つに「Thinking Claude (OpenAI O1 Alternative)」というものがある。 このサンプルがどういうものか、未だに自分でも解けない以下の問題をためしに聞いてみることにした。 『人類の...
0 件のコメント:
コメントを投稿