Показать сообщение отдельно
Старый 11.03.2020, 14:14   #4  
mikki_messer is offline
mikki_messer
Участник
 
91 / 20 (1) +++
Регистрация: 20.04.2010
Адрес: Ростов-на-Дону
Продолжение:

В общем, после двухдневных плясок с бубном вокруг SysEmailReader, было принято решение использовать библиотеки MailKit и MimeKit (гитхаб). К Dynamics AX 2012 R3 она подключилась (компилировали под .NET 4.5), ниже код, чтобы получить все письма из ящика через POP3, получить тему сообщения и сохранить сообщения на диск в формате eml.

Может быть, кому-то пригодится

X++:
    str     currentUID;    
    MailKit.Net.Pop3.Pop3Client pop3Client;    
    MimeKit.MimeMessage message;
    MimeKit.FormatOptions frmt = new MimeKit.FormatOptions();
    System.Threading.CancellationTokenSource src = new System.Threading.CancellationTokenSource();
    System.Threading.CancellationToken      tkn = src.get_Token();
    Int     mailCnt, i;
    ;
    try
    {
        pop3Client = new MailKit.Net.Pop3.Pop3Client();
        pop3Client.Connect(serverURI, portNumber, useSSL, tkn);
        pop3Client.Authenticate(login, passwd, tkn);
                        
        mailCnt = pop3Client.get_Count();
        info(strFmt('Total messages: '+int2str(mailCnt)));
        for(i = 0; i< mailCnt; i++)
        {
            message = pop3Client.GetMessage(i, tkn, null);
            currentUID = pop3Client.GetMessageUid(i, tkn);
            info(message.get_Subject());
            
            message.WriteTo(frmt, strFmt("C:\\DAX\\Mail\\%1.eml", currentUID), tkn);
        }
        
        pop3Client.Disconnect(true, tkn);
    }
    catch
    {
        pop3Client.Disconnect(true, tkn);
        error("Error!");
    }
    info('Done');