Пересылать почту на другой почтовый ящик - PullRequest
1 голос
/ 11 декабря 2008

Я работаю над приложением, в котором мне нужно перенести почту из почтового ящика в другой. Я не могу отправлять эти письма, используя smtp, потому что это изменит информацию заголовка. Я использую C # и смотрю api для обработки почты. В любом случае я могу пересылать почту на другой почтовый ящик без изменения заголовка письма.


Под передачей я имею в виду, что мне нужно взять письмо из одного почтового ящика и переместить его в другой почтовый ящик, не меняя никакой информации заголовка. Если я использую smtp, информация заголовка будет изменена. Я слышал, что с помощью почты MAPI можно перемещать из одного почтового ящика в другой почтовый ящик. любые указатели.

Ответы [ 6 ]

2 голосов
/ 17 декабря 2008

Мне удалось переместить почту из одного почтового ящика в другой, используя Redemption. Это похоже на копирование почты из одного почтового ящика в другой. Первый вход в почтовый ящик назначения с использованием выкупа. Получить ссылку на папку, в которую вы хотите переместить почту. В моем случае это был почтовый ящик. Теперь преобразуйте почтовый элемент outlook в RDOMail и скопируйте rdomail в папку назначения. здесь код -

 rdoSession.LogonExchangeMailbox("TEST", "ServerName");
 RDOExchangeMailboxStore mailBoxStore = (Redemption.RDOExchangeMailboxStore)
 rdoSession.Stores.DefaultStore;
 RDOFolder inboxFolder = null;

            foreach (RDOFolder rdoFolder in mailBoxStore.IPMRootFolder.Folders)
            {
                if (rdoFolder.Name.Equals("Inbox", StringComparison.InvariantCultureIgnoreCase))
                {
                    inboxFolder = rdoFolder;
                    break;
                }
            }
            rdoMail.CopyTo(inboxFolder);

при этом почта будет скопирована в новый почтовый ящик без изменения информации заголовка.

1 голос
/ 12 декабря 2008

Если вы не можете загрузить все соответствующие почтовые ящики в один профиль Outlook, это не может быть решено с помощью Outlook API. Однако должна быть возможность запуска автономного приложения из учетной записи администратора, которая напрямую обращается к хранилищу данных Exchange через Extended MAPI. Затем можно последовательно открывать исходные почтовые ящики и перемещать соответствующие почтовые элементы в целевой почтовый ящик.

Это позволит вам запускать пакетное задание, собирая все почтовые ящики из центрального места за одну гигантскую операцию. Однако если ваша задача состоит в том, чтобы перемещать сообщения в том виде, в котором они появляются, то, возможно, решение этой проблемы более децентрализованно с помощью надстроек Outlook, установленных на исходных компьютерах, может быть более разумным подходом в конце концов. Возможно, если вы расскажете нам немного больше о вашей мотивации для перемещения этих предметов, мы сможем найти еще лучшее решение.

Если вы выбираете подход с централизованным харвестером, я настоятельно рекомендую использовать для этого вспомогательную библиотеку, такую ​​как Redemption , так как в противном случае, вероятно, потребуется несколько месяцев, прежде чем вы соберете достаточно знаний для решения задачи. Платформа RDO (объекты данных погашения) должна особенно хорошо подходить для запуска ASAP.

0 голосов
/ 12 декабря 2008

Тогда вам нужен MAPI. Это довольно сложный API. Об этом есть одна старая книга, но это все. Лучше всего начать с загрузки MFCMapi и посмотреть, как вы можете делать то, что вам нужно, например, Откройте почтовые ящики двух пользователей и скопируйте сообщение между ними. Затем посмотрите на источник для MFCMapi и посмотрите, как это делается, и работайте оттуда.

0 голосов
/ 11 декабря 2008

Что именно вы подразумеваете под «переводом»? Если вы говорите об эквивалентном перетаскивании почты из одного почтового ящика в другой, загруженной в тот же профиль Outlook, то просто используйте метод MailItem.Move.

0 голосов
/ 11 декабря 2008

Какая связь у почтовых ящиков? Они на одном сервере Exchange? Если это так, лучше всего использовать MAPI для копирования сообщений. Если нет, вы можете экспортировать сообщения в PST или в коллекцию MSG-файлов. Это нужно автоматизировать?

0 голосов
/ 11 декабря 2008

Если вы используете Outloook API, я уверен, что есть поддержка резервного копирования и восстановления. Поэтому сделайте резервную копию своей почты с одной учетной записи и восстановите ее с другой. Это будет моя первая попытка. PS: я не знаком с API.

...