Получить идентификатор из только что отправленного письма - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь получить идентификатор электронной почты, который я только что отправил через Java EWS API. Моя цель - получить этот идентификатор и сохранить его в базе данных.

Вот что я пытаюсь:

    try {
        String isiEmail     = generateIsiEmail(nmBank, jenis, tglAw, tglAk, produk);
        EmailMessage mail   = new EmailMessage(service);
        mail.setSubject(jdlEmail);
        mail.setBody(new MessageBody(isiEmail));

        //set to cc 
        mail.getToRecipients().add(new EmailAddress(from.replaceAll("\\s", "")));                   
        String[] too = to.split("\\;");
        for (int i = 0; i <too.length; i++) { 
            mail.getToRecipients().add(new EmailAddress(too[i].replaceAll("\\s", "")));                 
        }           
        String[] ccc = cc.split("\\;");
        for (int i = 0; i <ccc.length; i++) {
            mail.getCcRecipients().add(new EmailAddress(ccc[i].replaceAll("\\s", "")));
        }           
        mail.sendAndSaveCopy();
    } catch (ServiceLocalException e) {
        e.printStackTrace();
    } catch (Exception e) { 
        e.printStackTrace();
    }

Спасибо за помощь.

Ответы [ 3 ]

0 голосов
/ 16 мая 2018

Вы должны использовать свойство InternetMessageId.

Вызвать метод FindItems для поиска сообщений в папке отправленных сообщений.Затем создайте экземпляр объекта EmailMessage, чтобы получить доступ к свойству InternetMessageId:

ItemView view = new ItemView(100); // You can change this to your needs.
view.PropertySet = new PropertySet(BasePropertySet.IdOnly, EmailMessageSchema.InternetMessageId);
FindItemsResults<Item> results = service.FindItems(WellKnownFolderName.SentItems, view);
foreach (Item item in results)
{
    if (item is EmailMessage)
    {
        EmailMessage emailMsg = item as EmailMessage;
        Console.WriteLine(emailMsg.InternetMessageId);
    }
}
0 голосов
/ 17 мая 2018

Я решил сам.этот шаг, что я сделал с.Я использую ссылку ExtendedPropertyDefinition из этого урока https://docs.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2010/dd633654(v%3dexchg.80), но я изменил с C # на язык программирования Java,

  1. установил ExtendedPropertyDefinition, затем сохранил uuidToStr в базе данных

        UUID uuid = UUID.randomUUID();
        ExtendedPropertyDefinition epd = new ExtendedPropertyDefinition(uuid, "NamaId", MapiPropertyType.String);
        String uuidToStr = uuid.toString();
    
        String isiEmail     = generateIsiEmail(nmBank, jenis, tglAw, tglAk, produk);
        EmailMessage mail   = new EmailMessage(service);
        mail.setSubject(jdlEmail);
        mail.setBody(new MessageBody(isiEmail)); 
    
        //set to cc 
        mail.getToRecipients().add(new EmailAddress(from.replaceAll("\\s", "")));                   
        String[] too = to.split("\\;");
        for (int i = 0; i <too.length; i++){
            mail.getToRecipients().add(new EmailAddress(too[i].replaceAll("\\s", "")));                 
        }           
        String[] ccc = cc.split("\\;");
        for (int i = 0; i <ccc.length; i++){
            mail.getCcRecipients().add(new EmailAddress(ccc[i].replaceAll("\\s", "")));
        }           
        mail.setExtendedProperty(epd, "isiId"); 
        mail.sendAndSaveCopy();     
    
  2. получить электронное письмо на основе ExtendedPropertyDefinition uuidToStr из базы данных

        UUID uuid = UUID.fromString("cc59cdbf-aad4-4cd1-a4f0-e7819c56b884");
        ExtendedPropertyDefinition epd = new ExtendedPropertyDefinition(uuid, "NamaId", MapiPropertyType.String);
    
        ItemView view2 = new ItemView(3);
        SearchFilter sf = new SearchFilter.IsEqualTo(epd,"isiId");
        FindItemsResults<Item> fir = service.findItems(WellKnownFolderName.SentItems, sf, view2);
        for (Item itm : fir.getItems()){
            System.out.println(itm.getId());
            System.out.println(itm.getSubject());  
        }
    

DONE;

0 голосов
/ 16 мая 2018

Я считаю, что решение заключается в следующем:

EmailMessage em = EmailMessage.bind( service, item.getId(),
                   new PropertySet( EmailMessageSchema.InternetMessageId) );

Объяснение:

Мы должны привязать элемент к сообщению электронной почты, но вместо сбора всей информации мы запрашиваем толькоидентификатор и любые дополнительные свойства, которые мы хотим через параметр PropertySet.

найдено -> Веб-службы Exchange получают сообщение с идентификатором сообщения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...