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