Переместить электронное письмо из одной папки в другую папку

#java #exchangewebservices

#java #exchangewebservices

Вопрос:

Я хочу переместить электронное письмо из папки в папку B. Программа должна принимать такие параметры, как идентификатор исходной папки, имя папки и уникальный идентификатор электронной почты, аналогично для папки назначения.

Примечание — Иногда папка может содержать вложенные папки внутри, программа должна перейти к указанному имени папки и идентификатору папки и переместить электронное письмо в соответствующее место.

Я переместил полные письма из одной папки в другую, но не смог сделать это для отдельных писем.

 if (folder.getDisplayName().equals("Inbox")) {
    FolderId fid = folder.getId();
    System.out.println("Folder Id - "  fid);

    for(Item item : findResult.getItems()){
        System.out.println("item - "   item.getId()); 

        item.load();
        item.move(fid);
    }                       
}
  

Комментарии:

1. Предполагая, что опубликованный вами код показывает, как вы перемещаете все электронные письма (элементы?) в папке fid , в чем проблема с выполнением этого только для одного элемента? Кроме того, что произойдет folder.getDisplayName().equals("Inbox") , если язык будет изменен на что-то другое, кроме английского? Я бы предположил, что отображаемое имя зависит от локали, не так ли?

2. есть ли какой-либо прямой поиск элемента в папке, выберите этот элемент и переместите в папку назначения. Я думаю, что каждый раз, когда я просматриваю полную папку для одного элемента, это будет утомительный процесс

3. Ну, как правило, вы должны сначала заставить его работать, а затем заставить его работать быстро. Если вы знаете, казалось бы, утомительный способ (с точки зрения производительности), используйте его в первую очередь. Возможно, вы обнаружите, что проблема с производительностью не так велика, как вы думаете, и даже если она есть, вы, вероятно, узнали бы несколько вещей, которые облегчат поиск или разработку улучшений.

Ответ №1:

Как вы уже сказали,

Иногда папка может содержать вложенные папки внутри, программа должна перейти к указанному имени папки и идентификатору папки и переместить электронное письмо в соответствующее место

Выполнение вашей цели зависит от findResult.getItems() , который здесь не показан. Возможно, вы захотите проверить рекурсивность в отношении того, чего вы пытаетесь достичь.

Как вы уже сказали, перемещение прошло успешно для всех электронных писем, но возникли проблемы с отдельными электронными письмами, это указывает на детали реализации GetItems().

Комментарии:

1. Привет, Пранай, не могли бы вы, пожалуйста, предоставить мне полный метод, который выполняет требуемую операцию

2. @Karthiktn поскольку вы должны иметь возможность поддерживать этот код в будущем и, вероятно, кое-чему научиться, предоставление вам всего кода не имело бы смысла (и в любом случае мы не являемся сервисом gimme-teh-codez). Мы здесь, чтобы дать советы и объяснения, но вы все равно должны приложить некоторые усилия к решению самостоятельно.