Добрый день всем...Проблема такова: нужно сделать кнопку, при нажатии на которую, происходит сканирование на вложенные файлы тех писем что вы выбрали...после сканирование должно автоматически происходить сохранение этих файлов и подкрепление их к контакту...

вот и вопрос: возможно ли производить такие действия или нет?просто я слышал что ТС работает только с заголовками писем и не может сканировать само письмо и тем более на вложенные файлы(тем более что либо потом с ними делать).

Нравится

12 комментариев

Здравствуйте.

Terrasoft работает с MS Outlook через COM объект, соответственно все методы и свойства доступны.

try {
	var Outlook = GetObject('', 'Outlook.Application');
} catch (e) {
var Outlook = new ActiveXObject('Outlook.Application');
var ActiveInspector = Outlook.ActiveInspector;
var myItem = ActiveInspector.CurrentItem.Forward;
var myattachments = myItem.Attachments;
var count = myattachments.count;
while(count > 0)
{
myattachments.SaveAsFile('@Path');
count--;
}

у меня все время ругается на ActiveInspector...говорит что он всегда "null" и потом из-за этого "myItem" всегда undifined

Здравствуйте!

Извиняюсь, опечатка. ActiveInspector - это метод (http://msdn.microsoft.com/en-us/library/office/ff863939.aspx).

Вот работающий код:

1

ну это я посмотрел, но проблема у меня в том что ActiveInspector всегда "null" и по какой то причине не видит прикрепленные файлы...и поэтому выдает мне ошибку...вот скрин-может вы увидите мою какую то ошибку?

Здравствуйте!

Откройте какое либо письмо, тогда ошибок не будет. Также Outlook может спросить подтверждения подключения от стороннего приложения.

Если Вам нужно читать вложения без открытия письма, смотрите в эту сторону.

Дмитрий в принципе все нормально доходит до момента сохранения...а вот на сохранении выдает ошибку. Пытался я посмотреть в методах и возможностях 'myattachments' что можно использовать что бы сохранить куда то вложенные файлы, но так и не нашел(( может вы знаете каким образом можно сохранить прикрепленные файлы куда то? вот кстати скрин.

Здравствуйте.

Вот так сохраняет:

function Main()
{
 
try {
        var Outlook = GetObject('', 'Outlook.Application');
} catch (e) {
var Outlook = new ActiveXObject('Outlook.Application');
}
var ActiveInspector = Outlook.ActiveInspector();
var myItem = ActiveInspector.CurrentItem.Forward;
var myattachments = myItem.Attachments;
myattachments.Item(1).SaveAsFile('C:\\Temp\\j_' + myattachments.Item(1).DisplayName);
 
 
}

Кстати, вот пример на VBA как сохранять все вложения писем с папки "Входящие":

Dim myApp As Outlook.Application
Dim myFolder As Outlook.MAPIFolder
Set myOlApp = CreateObject("Outlook.Application")
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox).Folders("1")
DestFolder = "C:\New"
     For Each Item In myFolder.Items
        For Each Atmt In Item.Attachments
            FileName = Atmt.FileName
                Atmt.SaveAsFile DestFolder + myattachments.Item(1).DisplayName
            End If
        Next Atmt
    Next Item
End Sub

Дмитрий спасибо огромное))все почти работает(немножко осталось поправить в моем коде)...))

Егор, не за что.

Будут дополнительные вопросы - обращайтесь.

Есть наверно по этой теме последний вопрос потому что не могу никак подобрать метод что бы все правильно до конца отрабатывало: в общем получилось так:
1) открывает письмо
2) сканирует на вложенные файлы
3) сохраняет первый файл
4) создает контакт и крепит к нему этот файл и по этому файлу заполняет карточку контакта
5) потом так же со вторым и т.д. по циклу для всех вложенных файлов

теперь не хватает последнего: не закрывается открытое окно письма аутлуковского. Искал методы что бы закрыть, но нашел только кучу методов и функционала только по отношению к основному окну а не открытого письма...что вы думаете по этому поводу?

Здравствуйте!

Нужно закрывать так:

var ActiveInspector = Outlook.ActiveInspector();
ActiveInspector.Close(0);

спс все работает как часы))

Показать все комментарии