ご存じのとおり、Gmailでは、特にサイズで文字を並べ替えることはできません。
ラベルで大きな文字をマークするサービス
-www.findbigmail.comがありますが、誰もが明確でない人にパスワードを与えたいとは限りません。
「Big Mail」ラベルを作成し、4MBを超えるすべての文字でマークするスクリプトを(溝に)書きました。 スクリプトでは、Gmailのユーザー名とパスワード、および必要に応じて「大きい」メールのサイズを置き換える必要があります。
スクリプトがクラスパスで機能するには
、ここから jarが存在する必要があります。
メッセージの反復が遅い(1秒間に1〜2)ので、表示されているメッセージの番号を出力して、スクリプトがスタックしていないことを確認します。
私の量(約20,000)であっても、すべてのメッセージを収集するには少し時間がかかります。 ただし、メッセージ属性(getSize())にアクセスすると、メッセージはサーバーに送信されます。
これを
Pre Fetchに設定すると、合計時間が減少する可能性がありますが、メッセージのリストを受信する時間が増加します(そして真剣に)(つまり、彼が生きているかどうかを知らずに待機します)
もう1つの興味深い点は、Gmailに適用されるcopyMessages()は何もコピーも転送もせず、単にラベルを追加するだけです。
メッセージを1つずつマークします。これにより、スクリプトがクラッシュした(ネットワークがクラッシュしたなどの理由で)ことで、何もしなかったことがわかりません。
一般に、改善すべき点はたくさんあります。名前とパスワードを対話形式で要求し、すでにマークされているものにはマークを付けないなどです。 誰がそれを必要とする-終了します:)
IMAPを忘れずに-Gmailの設定で有効にしてください。
// Mark large email messages in Gmail by "Bim Mail" label. // (c) Pavel :) // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY
import java.security.NoSuchProviderException import javax.mail.*
final int BIG_MAIL_SIZE = 2 ** 22 //4Mb final String username = "xxx" final String password = "xxx"
Properties props = System.getProperties () props.setProperty ( "mail.store.protocol" , "imaps" ) props.setProperty ( "mail.imap.socketFactory.class" , "javax.net.ssl.SSLSocketFactory" ) props.setProperty ( "mail.imap.socketFactory.fallback" , "false" )
Folder all, big Store store
try { Session session = Session.getDefaultInstance ( props, null ) store = session.getStore ( "imaps" ) final String mailaddress = "$username@gmail.com"
store.connect ( "imap.gmail.com" , mailaddress, password ) def folderName = "[Gmail]/All Mail" all = store.getFolder ( folderName ) all.open ( Folder.READ_WRITE ) ;
println ( "Creating BigMail ..." ) big = store.getFolder ( "BigMail" ) if ( big.create ( Folder.HOLDS_MESSAGES )) println "Ok." else println "Failure. Already exists?"
big.open ( Folder.READ_WRITE ) ;
println "Downloading from folder $folderName ...." List<Message> messages = all.getMessages () println "Got ${messages.size()} messages"
int count = 0 messages.each { int size = it.getSize () ;
if ( size > BIG_MAIL_SIZE ) { println "$count: Big mail: ${it.getSubject()} (${it.getSize()})" all.copyMessages ([ it ] .toArray ( new Message [ 1 ]) , big )
} else { println count } count++
}
} catch ( NoSuchProviderException e ) { e.printStackTrace () ; System.exit ( 1 ) ; } catch ( MessagingException e ) { e.printStackTrace () ; System.exit ( 2 ) ; } finally { // Close connection all.close ( false ) big.close ( false ) store.close () }
|
Java2html
|