Я пытаюсь и успешно получаю электронную почту через IMAP с сервера Exchange.
Моя цель - копировать (ДУБЛИРОВАТЬ) электронные письма из «INBOX» в определенную папку по дате.
Например. Дублируйте все ЯНВАРНЫЕ ПОЧТЫ из папки «Входящие» в папку «ЯНВАРЬ». и т.д.
Я сделал это, и это работает! Тем не менее, он не находит все электронные письма за январь. Я видел много электронных писем, которые не были скопированы в папку назначения.
У вас, ребята, есть лучшее решение, чем это?
`Calendar cal1 = null;
cal2.set(2017, 12, 31);
Calendar cal2 = null;
cal1 = Calendar.getInstance();
cal2 = Calendar.getInstance();
cal1.set(2017, 12, 01); // a MONTH BEFORE!!
SimpleDateFormat df1 = new SimpleDateFormat("dd/MM/yyyy");
Date d1 = null;
Date d2 = null;
try {
d1 = df1.parse("01/01/2018");
d2 = df1.parse("31/01/2018");
} catch (ParseException e1) {
e1.printStackTrace();
}
if (init())
;
{
try {
String credentials = String.format(CREDENTIALS_FORMAT, domain, username1);
store = session.getStore(MAIL_PROTOCOL);
for (int i = 0; i < mailboxes.size(); i++) {
store.connect(host, credentials + mailboxes.get(i), password);
folderSource = store.getFolder(SourcefolderName);
folderDest = store.getFolder(DestfolderName);
folderSource.open(Folder.READ_ONLY);
if (!folderDest.exists()) {
folderDest.create(Folder.READ_WRITE);
}
Date datecal1 = new Date(cal1.getTimeInMillis());
Date datecal2 = new Dat`enter code here`e(cal2.getTimeInMillis());
ReceivedDateTerm dateTermCal1 = new ReceivedDateTerm(ComparisonTerm.GE, d1);
ReceivedDateTerm dateTermCal2 = new ReceivedDateTerm(ComparisonTerm.LE, d2); SearchTerm andTerm = new AndTerm(dateTermCal2, dateTermCal1);
Message messages[] = folderSource.search(andTerm);
folderSource.copyMessages(messages, folderDest);'