AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.02.2013, 11:15   #17  
FrolovAndy is offline
FrolovAndy
Участник
 
71 / 45 (2) +++
Регистрация: 13.09.2007
По поводу того как получить вложение - привожу свой код, посмотрите, я его давно уже закодил, сейчас честно говоря уже лень вникать и анализировать, поэтому привожу полностью. Может быть, там то же самое что и у вас, а может и как-то по-другому я сделал )

X++:
public void run()
{
    OpenPop.Pop3.Pop3Client             pop3Client;
    OpenPop.Mime.Message                message;
    OpenPop.Mime.MessagePart            messagePart;
    OpenPop.Mime.Header.MessageHeader   messageHeader;
    OpenPop.Mime.Header.RfcMailAddress  fromAddress;
    System.Net.Mail.SmtpClient          smtpClient;
    System.Net.Mail.MailMessage         mailMessage;
    System.Collections.ArrayList        arrayList;
    System.Collections.IEnumerator      enumerator;
    System.IO.FileInfo                  fileInfo;
    TS_ImportFolderEmailSettings        folderEmailSettings;
    Counter                             attachCount;
    Counter                             messageCount;
    Counter                             ix;
    FileName                            attachFileName;
    str                                 strFromAddress;
    str                                 subject;
    str 20                              subject20;
    str                                 body;
    int                                 posOfNO;
    str                                 fileExtension;
    str                                 fileName;
    boolean                             moveNext;
    GM_ExpImpParameters                 expImpParameters = GM_ExpImpParameters::find();
    ;
    new InterOpPermission(InteropKind::ClrInterop).assert();

    pop3Client = new OpenPop.Pop3.Pop3Client();
    pop3Client.Connect(expImpParameters.Pop3Server, expImpParameters.Pop3Port, false);
    pop3Client.Authenticate(expImpParameters.FromEmailAccount, expImpParameters.FromEmailPassword);

    messageCount = pop3Client.GetMessageCount();

    for (ix = 1; ix <= messageCount; ix ++)
    {
        message = pop3Client.GetMessage(ix);
        messageHeader = message.get_Headers();

        subject = messageHeader.get_Subject();

        posOfNO = strscan(subject, 'NO', 1, strlen(subject));
        if (posOfNO)
        {
            subject = strltrim(strrtrim(strdel(subject, posOfNO, strlen(subject) - posOfNO + 1)));

            // участок кода, чтобы не удалялась почта, являющаяся подтверждением экспорта
            subject20 = subject;
            select firstonly folderEmailSettings
                where folderEmailSettings.EmailSubject == subject20 &&
                      folderEmailSettings.ExportReply  == NoYes::Yes;
            if (folderEmailSettings.RecId)
            {
                continue;
            }
            // <--

            arrayList = message.FindAllTextVersions();
            enumerator = arrayList.GetEnumerator();
            moveNext = enumerator.MoveNext();
            if (moveNext)
            {
                messagePart = enumerator.get_Current();
                body = messagePart.GetBodyAsText();
                body = strltrim(strrtrim(body));

                arrayList = message.FindAllAttachments();
                attachCount = arrayList.get_Count();

                folderEmailSettings = TS_ImportFolderEmailSettings::find(subject, body);
                if (folderEmailSettings.ImpFileFolder)
                {
                    if (this.checkFolder(folderEmailSettings.ImpFileFolder))
                    {
                        if (attachCount == 1)
                        {
                            enumerator = arrayList.GetEnumerator();
                            moveNext = enumerator.MoveNext();
                            if (moveNext)
                            {
                                messagePart = enumerator.get_Current();
                                attachFileName = messagePart.get_FileName();
                                fileExtension = any2str(conpeek(fileNameSplit(attachFileName),3));
                                if (fileExtension == #txt)
                                {
                                    fileInfo = new System.IO.FileInfo(folderEmailSettings.ImpFileFolder +
                                                                      #FilePathDelimiter                +
                                                                      attachFileName);
                                    messagePart.Save(fileInfo);

                                    smtpClient = new System.Net.Mail.SmtpClient(expImpParameters.SmtpServer,
                                                                                expImpParameters.SmtpPort);

                                    fromAddress = messageHeader.get_From();
                                    strFromAddress = fromAddress.get_Address();

                                    mailMessage = new System.Net.Mail.MailMessage(expImpParameters.FromEmail,
                                                                                  strFromAddress);
                                    subject = messageHeader.get_Subject();
                                    mailMessage.set_Subject('RE:' + subject);

                                    smtpClient.Send(mailMessage);
                                }
                                else
                                {
                                    error(strfmt("Тип вложенного файла должен быть %1", #txt));
                                }
                            }
                            else
                            {
                                error("Ошибка вложения сообщения");
                            }
                        }
                        else
                        {
                            error("Неверное количество вложений в сообщении");
                        }
                    }
                }
                else
                {
                    error(strfmt("Не определены настройки импорта для %1 по коду %2", subject, body));
                }
            }
            else
            {
                info("У сообщения отсутствует текст");
            }
        }
        pop3Client.DeleteMessage(ix);
    }

    pop3Client.Disconnect();

    CodeAccessPermission::revertAssert();
}

Оффтоп: Eloy, если не секрет, скажите - ваш никнейм случайно не связан с музыкальной темой?

Последний раз редактировалось FrolovAndy; 19.02.2013 в 11:17.
За это сообщение автора поблагодарили: Ace of Database (3), Spiker (1), pedrozzz (2), handy-comp (1).
Теги
mail, outlook, pop3, получение, почта

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
кнопка "Выбрать отборочную накладную" при обработке накладной по закупке (DAX2009) Bega DAX: Функционал 0 27.07.2010 14:35
Отправка почты через Outlook... lev DAX: Программирование 9 12.12.2008 13:27
DAX2009. Модуль "Управление качеством". Проблема в архитектуре. slava09 DAX: Функционал 8 09.07.2008 16:20
CRM:отправка почты на Outlook fialka DAX: Функционал 2 17.06.2008 16:09
Право доступа к таблице "Только чтение" gudzon DAX: Программирование 1 24.08.2004 16:14

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:37.