powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как из Access корректно посмотреть папку "Исходящие" в Outlook
2 сообщений из 2, страница 1 из 1
Как из Access корректно посмотреть папку "Исходящие" в Outlook
    #39655824
K-Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде ерундовая задача, но не могу побороть.
Суть в том, что я из Access 2010 отправляю сообщения через Outlook. При этом нужно убедиться, что сообщение действительно сформировалось (были случаи, когда они по какой-то причине они не формировались). Поэтому я проверяю, что сообщение появилось в папке "Исходящие" (или в "Отправленные"). Сообщения отправляются в автомате, их десятки-сотни, поэтому ждать когда они появятся в "Отправленных" нельзя - долго. Беда в том, что иногда сообщение переносится из "Исходящих" в "Отправленные" в промежуток времени, между тем, когда я проверяю наличие сообщений в папке и когда я обращаюсь к сообщению. Т.е. между строками
Код: vbnet
1.
2.
  If pOutbox.Items.Count > 0 Then
    If (pOutbox.Items(pOutbox.Items.Count).Subject = Subj) Then

Что тут можно придумать, кроме On Error Resume Next ?
Заранее премного благодарен
Вот процедура целиком:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Private Function SendIfor(ByVal Subj As String, ByVal Body As String, ByVal Addr As String) As Integer
Dim pApp As Outlook.Application
Dim pMail As Outlook.MailItem
Dim pNS As Outlook.NameSpace
Dim pOutbox As Outlook.Folder
Dim pSent As Outlook.Folder
 
 ' Формируем письмо
  Set pApp = New Outlook.Application
  Set pMail = pApp.CreateItem(0)
  Set pNS = pApp.GetNamespace("MAPI")
  Set pOutbox = pNS.GetDefaultFolder(olFolderOutbox)
  Set pSent = pNS.GetDefaultFolder(olFolderSentMail)
  pMail.To = Addr
  pMail.Subject = Subj
  pMail.BodyFormat = 2 ' HTML
  pMail.HTMLBody = Body
 
  ' Отправляем письмо
  pMail.Send
  DoEvents
 
  ' проверяем, что письмо попало в Исходящие или в Отправленные
  SendIfor = 1
  If pOutbox.Items.Count > 0 Then
    If (pOutbox.Items(pOutbox.Items.Count).Subject = Subj) Then
      SendIfor = 0
    End If
  End If
  If pSent.Items.Count > 0 Then
    If (pSent.Items(pSent.Items.Count).Subject = Subj) Then
      SendIfor = 0
    End If
  End If
 
  Set pMail = Nothing
  Set pApp = Nothing
  Set pNS = Nothing
  Set pOutbox = Nothing
  Set pSent = Nothing
 
End Function
 
...
Рейтинг: 0 / 0
Как из Access корректно посмотреть папку "Исходящие" в Outlook
    #39655899
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K-Nick,
pMail.Send
а кликает автокликер? - может промахивается?
думаю если сотни писем Вам CDO применять лучше.
p.s.
как оно вообще работает?
Код: vbnet
1.
2.
3.
4.
5.
  Set pApp = New Outlook.Application
  Set pMail = pApp.CreateItem(0)
  Set pNS = pApp.GetNamespace("MAPI")
  Set pOutbox = pNS.GetDefaultFolder(olFolderOutbox)
  Set pSent = pNS.GetDefaultFolder(olFolderSentMail


непонятно зачем закидывать в отправленные то что придет из исходящих?
Set pMail = pApp.CreateItem(0) - ? это тема в ... где ?
какая то путаница, вобщем
плюхнул код который по руку попал-выдернул из модуля класса, великоват полный выкладывать да и не причесан он - потому только часть
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim mobjOLNamespace As Outlook.Namespace, Foldertosave As OlDefaultFolders 
Private Sub...
Dim objOutlook As New Outlook.Application
    Dim objNamespace As Outlook.Namespace 
Set objNamespace = objOutlook.Session
'...
end sub


создаем письмо в подпапке
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Public Sub sendmessage()
On Error GoTo err1' решил вытащить всю функцию как есть
Dim mpf As Outlook.Folder, mpfInbox As Outlook.Folder
Dim OL_Itemmail As MailItem
Set mpfInbox = mobjOLNamespace.GetDefaultFolder(Foldertosave) ' какая то умолчальная папка, определенная ранее в модуле
Set mpf = mpfInbox.Folders.Item(miEvent.Zametka) ' подпапка в основной папке куда и будем закидывать наши нетленки
Set OL_Itemmail = mpf.Items.Add
With OL_Itemmail
    .To = miEvent.Firma
    .Subject = MyProfile
    .BodyFormat = olFormatPlain
    .Body = MyCategry
    Set .SaveSentMessageFolder = mpf ' присмотритесь сюда.
    .Display ' у меня писем немного, но и .send здесь это же просто кошмар
End With
Exit Sub
err1:
Select Case err.Number
Case -2147352567: Set mpf = mpfInbox.Folders.Item(miEvent.Zametka): Resume Next
Case -2147221233: Set mpf = mpfInbox.Folders.Add(miEvent.Zametka): Resume Next ' создадим папку если её нет
Case -2147024894: MsgBox "Ошибочный путь файла"
Case -2147467259
Case Else
            MsgBox "Error: " & err.Description & _
             " (" & err.Number & ")"
End Select

End Sub

...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как из Access корректно посмотреть папку "Исходящие" в Outlook
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]