Получить ссылку / путь к электронной почте в Outlook? - PullRequest
1 голос
/ 06 июля 2010

Я работаю над приложением, которое должно взять ссылку на электронное письмо из Outlook и сохранить его в базе данных.

Я смотрел на API Microsoft.Office.Interop.Outlook, но не могу найти что-то, что можно использовать для этого.

Есть мысли?

Ответы [ 2 ]

2 голосов
/ 06 июля 2010

Вы можете сохранить электронное письмо в виде файла .msg, а затем сохранить его в базе данных в виде массива байтов?

В противном случае существуют способы программного доступа к почтовому ящику или файлу outlook .pst, вам нужно будет написать интерфейс, который позволит им выбрать электронное письмо для сохранения, а затем сохранить электронное письмо по частям (тема, из, из и т. Д.). ) отдельно в базу данных.

Чтобы получить доступ к почтовому ящику на сервере Exchange (Exchange 2007+), вы можете сделать это с помощью управляемого веб-служб Exchange API 1.0. EWS API и вы можете скачать его с здесь

Это действительно упрощает доступ и получение электронной почты и т. Д., Как и до Exchange 2007, это было болезненно и требовало анализа большого количества XML или использования CDOEXM.

Вот пример того, как его использовать:

Сначала необходимо создать службу Exchange. Добавьте ссылку на EWS и добавьте строку использования ниже.

using Microsoft.Exchange.WebServices.Data;
...
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.AutodiscoverUrl( "First.Last@MyCompany.com" );

После запуска службы вы можете использовать ее для запроса почтового ящика:

FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox,
       new ItemView());

Это вернет все электронные письма в папке «Входящие». После этого вы можете просмотреть детали письма, используя его свойства. т.е. item.Subject;

Однако, если электронные письма находятся в PST-файле, вам нужно будет использовать Outlook API, или я рекомендую PST.NET (хотя вам и нужна лицензия), так как это делает его много легче.

Вот пример использования PST.NET:

using System;
using Independentsoft.Pst;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            PstFile file = new PstFile("c:\\testfolder\\Outlook.pst");

            using (file)
            {
                Folder inbox = file.MailboxRoot.GetFolder("Inbox");

                if (inbox != null)
                {
                    ItemCollection items = inbox.GetItems();

                    for (int m = 0; m < items.Count; m++)
                    {
                        if (items[m] is Message)
                        {
                            Message message = (Message)items[m];

                            Console.WriteLine("Id: " + message.Id);
                            Console.WriteLine("Subject: " + message.Subject);
                            Console.WriteLine("DisplayTo: " + message.DisplayTo);
                            Console.WriteLine("DisplayCc: " + message.DisplayCc);
                            Console.WriteLine("SenderName: " + message.SenderName);
                            Console.WriteLine("SenderEmailAddress: " + message.SenderEmailAddress);
                            Console.WriteLine("----------------------------------------------------------------");
                        }
                    }
                }
            }

            Console.WriteLine("Press ENTER to exit.");
            Console.Read();
        }
    }
}
2 голосов
/ 06 июля 2010

В Outlook отсутствует такая ссылка, как электронная почта.

Полагаю, вы хотели бы сохранить что-то вроде ярлыка в текстовом формате, который можно использовать позже, чтобы найти / открыть электронное письмо в Outlook. Если вы планируете использовать Outlook Interop API для этого, вы можете использовать EntryID объекта MailItem, представляющего вашу электронную почту. Это уникальный идентификатор элемента, но его можно изменить, если элемент перемещен в другое место в структуре папок.

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