Как создать новый файл PST (не в папке «Входящие») и переместить почту Outlook в этот PST - PullRequest
0 голосов
/ 10 июня 2019

Я новичок в программировании.Пытаюсь изучить VB.net, чтобы завершить проект для моей церкви.

Используя VB.net, мне нужно читать электронные письма Outlook, анализировать различные данные и в конечном итоге помещать их в SQL.После этого мне нужно переместить элемент электронной почты из папки «Входящие» в дочерний файл PST, который я надеюсь создать один раз в неделю, под существующим PST с именем «done \ today date».PST не находится в папке «Входящие».

Я потратил месяцы, пытаясь выучить и собрать код.Теперь я могу читать сообщения электронной почты в папке «Входящие».Я только начал писать код для разбора данных, и я буду беспокоиться о том, чтобы перенести его в SQL позже.Моя проблема на сегодня - правильная настройка Destination PST («сделано \ сегодня»).И, возможно, правильный синтаксис для предварительного перемещения.Ниже приведена сокращенная версия кода, который я использую:

Imports Microsoft.Office.Interop

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim dt As New DataTable
        Dim olApp As Outlook.Application = New Outlook.Application()
        Dim ns As Outlook.NameSpace = olApp.GetNamespace("MAPI")
        Dim selectFolder As Outlook.MAPIFolder = Nothing
        Dim mi As Outlook.MailItem = Nothing
        Dim olDestinationFolder As Outlook.MAPIFolder = Nothing
        selectFolder = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox)
        olDestinationFolder = ns.GetDefaultFolder(Outlook.Folder.ns.Folders("\\seafood@cgw.com\done\4 12 2019")

 ~~~~~Code set up data table to prepare parsing - NOT SHOWN HERE~~~~~~

       For Each item As Object In selectFolder.Items
           ~~~~`Code for parsing - NOT SHOWN HERE ~~~~~~

            dt.Rows.Add(dr)
            i += 1
            item.Move(olDestinationFolder) 'after parsing move mail item
        Next
        Me.DataGridView1.DataSource = dt  'display parsed data, just to see
     'Closing apps and files
        olApp = Nothing
        ns = Nothing
        selectFolder = Nothing
        mi = Nothing
        olDestinationFolder = Nothing

        MsgBox("Ready to close") ' A msg just so I know code has run
    End Sub
End Class

Я ожидаю, что сообщение электронной почты будет перемещено в папку PST (удалено из папки «Входящие» и добавлено в папку PST.) Программа выдает ошибку «»ns 'не является членом' Folder '".Я не удивлен, когда я взял WAG в строке 12 "olDestinationFolder = ns.GetDefaultFolder (Outlook.Folder.ns.Folders (" \ seafood@cgw.com \ done \ 4 12 2019 "))" Я просто незнать, как установить папку назначения, которая вызывает ошибку.Или правильный способ переместить почтовый элемент в эту папку.Спасибо!

1 Ответ

0 голосов
/ 10 июня 2019

Линия

olDestinationFolder = ns.GetDefaultFolder(Outlook.Folder.ns.Folders("\\seafood@cgw.com\done\4 12 2019")

должно быть

olDestinationFolder = ns.Folders("seafood@cgw.com\done\4 12 2019")

Предполагается, что PST-файл с именем «seafood@cgw.com \ done \ 4 12 2019» уже был добавлен в профиль (что я сомневаюсь, поскольку в имени файла не может быть «\»). Если нет, вы можете программно добавить новый файл PST, используя Namespace.AddStoreEx.

Также обратите внимание, что вы не должны использовать «для каждого» при изменении коллекции (ба вызов item.Move) - используйте понижающий цикл (for i = Items.Count to 1 step -1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...