ご存じのとおり、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
|