![]() |
#17 |
Участник
|
По поводу того как получить вложение - привожу свой код, посмотрите, я его давно уже закодил, сейчас честно говоря уже лень вникать и анализировать, поэтому привожу полностью. Может быть, там то же самое что и у вас, а может и как-то по-другому я сделал )
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, получение, почта |
|
|