|
|
|
| В качестве исходного примера использую статью Олега "Способы интеграции MS ACCESS и MS Outlook "
Поскольку при попытке отослать письмо Outlook запрашивает подтверждение на это действие, решил просто сохранить письма в папке "Исходящие". А они сохраняются в папке "Входящие". Кто знает как переключить на нужную папку?
Для примера текст процедуры
'создает новое письмо с вложением для нескольких адресатов
Dim OL_App As Outlook.Application
Dim OL_ItemMail As Outlook.MailItem
Dim RecipientTask As Recipient
Dim OL_Pattern As Outlook.RecurrencePattern
Set OL_App = CreateObject("Outlook.Application") ' получаем объект Outlook
Set OL_ItemMail = OL_App.CreateItem(olMailItem) ' создаем новое письмо
With OL_ItemMail
.To = "Мой@адрес" 'адрес получателя
.Subject = "Тест программы" & " за " & CStr(Date) ' заголовок письма
.Body = "Тело тестового сообщения"
' .OriginatorDeliveryReportRequested = True 'Уведомление о доставке
' .ReadReceiptRequested = True 'Уведомление о прочтении
.Save ' сохраним письмо - если использовать только это действие, письмо сохраняется в папке "Входящие", а надо "Исходящие"
If Not Me.NoSend Then
.Send ' отправим письмо - а если используется и это действие, то письмо сохраняется в папке "Отправленные"
End If
End With
Set OL_ItemMail = Nothing ' очищаем объект
|
| |
|
| |
|
|
|
| Кажется ничего сделать нельзя. Был наверно какой-то сбой. Сейчас письма попадают в папку "черновики". Чтобы они попадали в папку "Исходящие" должна быть команда "отправить". И опять тот же запрос на подтверждение. Впрочем можно выделить все письма из черновиков и переместить в папку "Исходящие". Но это ручная работа, которой хочется избежать.
Может у кого-то есть идеи? | |
|
| |
|
|
|
| Этот код делает активной папку "Исходящие". По логике, новое письмо должно сохраняться в ней.
Set myNamespace = myolApp.GetNamespace("MAPI")
Set myolApp.ActiveExplorer.CurrentFolder = myNamespace.GetDefaultFolder(olFolderOutbox)
|
Кроме того, у вашего OL_ItemMail есть метод Move, который может переместить письмо в папку, указанную с помощью того же GetDefaultFolder.
А чтоб отправлять из Outlook письма без лишних вопросов, я использую библиотеку RDO. Поройтесь в инете. | |
|
| |
|
|
|
| Попробовал. Письма сохраняются в папке "Черновики"
Dim OL_App As Outlook.Application
Dim OL_ItemMail As Outlook.MailItem
Dim OL_NameSpace As Outlook.NameSpace
Dim RecipientTask As Recipient
Dim OL_Pattern As Outlook.RecurrencePattern
Dim OL_FolderMail As Outlook.MAPIFolder
Set OL_App = CreateObject("Outlook.Application") ' получаем объект Outlook
Set OL_NameSpace = OL_App.GetNamespace("MAPI") 'получаем Namespace
Set OL_App.ActiveExplorer.CurrentFolder = OL_NameSpace.GetDefaultFolder(olFolderOutbox)
|
| |
|
| |
|
|
|
| Пробовал и так
Dim OL_App As Outlook.Application
Dim OL_ItemMail As Outlook.MailItem
Dim OL_NameSpace As Outlook.NameSpace
Dim RecipientTask As Recipient
Dim OL_Pattern As Outlook.RecurrencePattern
Dim OL_FolderMail As Outlook.MAPIFolder
Set OL_App = CreateObject("Outlook.Application") ' получаем объект Outlook
Set OL_NameSpace = OL_App.GetNamespace("MAPI")
' получаем ссылку на папку исходящие
Set OL_FolderMail = OL_NameSpace.GetDefaultFolder(olFolderOutbox)
| Тоже сохраняются в папке "Черновики" | |
|
| |
|
|
|
| ...
Set OL_FolderMail = OL_NameSpace.GetDefaultFolder(olFolderOutbox)
...
.Save
.Move(OL_FolderMail)
... | |
|
| |
|
|
|
| Письма перемещаться-то перемещаются, но отправляться не хотят. Прав был Олег. Смотри его пост ниже. Бросил это неблагодарное дело и поставил программку, о которой написал ниже.
Работает, только свистит. Правда пришлось самому задержку на 5 сек ставить между письмами, а то провайдер за спамера принимает. | |
|
| |
|
|
|
| переместить не проблема
Получаем папку Draft и от туда все item.Move в папку olFolderOutbox
Dim OL_App As Outlook.Application
Dim OL_NameSpace As Outlook.NameSpace
Dim OL_FolderMail As Outlook.MAPIFolder
Dim OL_ItemMail As Outlook.MailItem
Dim OL_Attachment As Outlook.Attachment
' получаем объект Outlook
Set OL_App = CreateObject("Outlook.Application")
'получаем Namespace
Set OL_NameSpace = OL_App.GetNamespace("MAPI")
' получаем ссылку на папку черновики
Set OL_FolderMail = OL_NameSpace.GetDefaultFolder(olFolderDrafts)
' перебираем все письма в папке и перемещаем в папку исходящие
For Each OL_ItemMail In OL_FolderMail.Items
OL_ItemMail.Move OL_NameSpace.GetDefaultFolder(olFolderOutbox)
next
|
Только это ничего не даст.
Есть есть еще свойство Submitted вот его программно в true мне поставить не удалось. а без этого письмо не уходит, у меня не получилось.
Попробуй при создании письма установить это свойство, но не уверен, оно вообще read-olny
http://msdn.microsoft.com/en-us/library/ff865326.aspx | |
|
| |
|
|
|
| Проблема с системой безопасности Outlook решена при помощи сторонней программы. (То всплывающее окошко с предупреждением, из-за чего я стал всё городить.
Сайт разработчика MAPILab.ltd - http://www.mapilab.com/
Программа называется - Advanced Security
Объём - 1,3 Мбайт
Контролирует обращения к системе безопасности Outlook. Легко ставится и деинсталлируется. Есть русский интерфейс и справка.
Прямой адрес для скачки - http://www.mapilab.com/files/security_outlook.zip
P.S. Извиняюсь, не знаю, как поставить тэги для URL. | |
|
| |
|
|
|
|
P.S. Извиняюсь, не знаю, как поставить тэги для URL.
|
Давно прошу товарища Osmor-a добавить тэги...
Но если сообщение сохранить, а потом открыть для правки - они есть. | |
|
| |
|
|
|
| сделаю | |
|
| |
|
|
|