Показать сообщение отдельно
Старый 19.02.2013, 11:15   #19  
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).