जैसा कि आप जानते हैं, जीमेल आपको अक्षरों को क्रमबद्ध करने की अनुमति नहीं देता है, विशेष रूप से आकार के अनुसार।
एक सेवा है जो एक लेबल के साथ बड़े अक्षरों को चिह्नित करती है -
www.findbigmail.com , लेकिन हर कोई अपना पासवर्ड किसी को भी नहीं देना चाहता है जो स्पष्ट नहीं है।
मैंने एक स्क्रिप्ट (खांचे पर) लिखी जो "बिग मेल" लेबल बनाती है और इसे 4MB से बड़े सभी अक्षरों के साथ चिह्नित करती है। स्क्रिप्ट में, आपको Gmail में उपयोगकर्ता नाम और पासवर्ड को बदलने की आवश्यकता है, साथ ही, यदि आप चाहें, तो "बड़े" ईमेल का आकार।
क्लासपाथ में काम करने के लिए स्क्रिप्ट के लिए,
यहाँ से जार होना चाहिए।
संदेश पुनरावृत्ति धीमा है (1-2 प्रति सेकंड), इसलिए मैंने देखा जा रहा संदेश की संख्या को मुद्रित करने के लिए सेट किया ताकि आपको पता चले कि स्क्रिप्ट अटक नहीं रही है।
मेरी मात्रा (लगभग 20,000) के साथ भी सभी संदेशों को एकत्र करने में थोड़ा समय लगता है। लेकिन जब संदेश की विशेषताओं तक पहुँच (getSize ()) संदेश सर्वर पर जाएगा।
आप इसे
प्री-फ़ेच पर सेट कर सकते हैं, फिर कुल समय घट सकता है, लेकिन संदेशों की सूची प्राप्त करने का समय बढ़ जाएगा (और गंभीरता से) (यानी आप यह जाने बिना इंतजार करेंगे कि क्या वह बिल्कुल जीवित है)
एक और दिलचस्प बिंदु: Gmail में लागू किया गया copyMessages () कुछ भी कॉपी या ट्रांसफ़र नहीं करता है, लेकिन बस एक लेबल जोड़ता है।
मैं एक समय में संदेशों को चिह्नित करता हूं ताकि यह पता न चले कि स्क्रिप्ट क्रैश हो गई है (उदाहरण के लिए, क्योंकि नेटवर्क क्रैश हो गया) और कुछ नहीं किया।
सामान्य तौर पर, सुधार करने के लिए बहुत कुछ है - इंटरैक्टिव नाम और पासवर्ड के लिए पूछें, उन लोगों को चिह्नित न करें जो पहले से ही चिह्नित हैं, आदि। किसे इसकी आवश्यकता है - खत्म कर देंगे :)
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
|