Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При использовании метода CreateItem объекта Application для создания элемента Microsoft Outlook элемент создается для основной учетной записи этого сеанса. В сеансе, в профиле которого определено несколько учетных записей, можно создать элемент для конкретной учетной записи IMAP, POP или Microsoft Exchange. Если в текущем профиле есть несколько учетных записей и в интерфейсе пользователя создается отправляемый элемент, например с помощью кнопки Создать сообщение или Создать собрание, инспектор отображает новый почтовый элемент или приглашение на собрание в режиме создания, а затем можно выбрать учетную запись, от имени которой будет отправлен элемент. В этом разделе показано, как программно создать отправляемый элемент и отправить его с помощью определенной учетной записи. В этом разделе содержатся два примера кода, в которые показано, как создать MailItem и AppointmentItem для определенной учетной записи, которая определяется текущей папкой в активном обозревателе.
Следующий пример управляемого кода написан на C#. Для запуска примера управляемого кода для .NET Framework, который вызывает модель COM, необходимо использовать сборку взаимодействия, которая определяет и сопоставляет управляемые интерфейсы с объектами COM в библиотеке типов объектной модели. Для Outlook можно использовать Visual Studio и первичную сборку взаимодействия Outlook (PIA). Перед запуском примеров управляемого кода для Outlook 2013 убедитесь, что вы установили Outlook 2013 PIA и добавили ссылку на компонент Microsoft Outlook 15.0 Object Library в Visual Studio. В классе надстройки ThisAddIn
Outlook следует использовать следующий код (с помощью средств разработчика Office для Visual Studio). Объект Application в коде должен быть доверенным объектом Application Outlook, предоставленным объектом ThisAddIn.Globals
. Дополнительные сведения об использовании Outlook PIA для разработки управляемых решений Outlook см. в статье Справочник по основной сборке взаимодействия Outlook на веб-сайте MSDN.
Первый приведенный ниже CreateMailItemFromAccount
метод создает элемент MailItem для определенной учетной записи и отображает его в режиме создания. Хранилище доставки по умолчанию для конкретной учетной записи совпадает с хранилищем папки, отображаемой в активном обозревателе. Текущий пользователь учетной записи задается в качестве отправителя. CreateMailItemFromAccount
Сначала определяет соответствующую учетную запись, сопоставляя хранилище текущей папки (полученной из свойства Folder.Store ) с хранилищем доставки по умолчанию для каждой учетной записи (полученной с помощью свойства Account.DeliveryStore ), определенной в коллекции Accounts для сеанса. CreateMailItemFromAccount
затем создает MailItem. Чтобы связать элемент с учетной записью, CreateMailItemFromAccount
назначает пользователя учетной записи в качестве отправителя элемента, задав для объекта AddressEntry для пользователя учетной записи свойство Senderэлемента MailItem. Назначение свойства Sender является важным шагом, так как в противном случае mailItem создается для основной учетной записи. В конце метода CreateMailItemFromAccount
отображается элемент MailItem. Обратите внимание, что если текущая папка не находится в хранилище доставки, CreateMailItemFromAccount
просто создает MailItem для основной учетной записи сеанса.
private void CreateMailItemFromAccount()
{
Outlook.AddressEntry addrEntry = null;
// Get the store for the current folder.
Outlook.Folder folder =
Application.ActiveExplorer().CurrentFolder
as Outlook.Folder;
Outlook.Store store = folder.Store;
Outlook.Accounts accounts =
Application.Session.Accounts;
// Match the delivery store of each account with the
// store for the current folder.
foreach (Outlook.Account account in accounts)
{
if (account.DeliveryStore.StoreID ==
store.StoreID)
{
addrEntry =
account.CurrentUser.AddressEntry;
break;
}
}
// Create MailItem. Account is either the primary
// account or the account with a delivery store
// that matches the store for the current folder.
Outlook.MailItem mail =
Application.CreateItem(
Outlook.OlItemType.olMailItem)
as Outlook.MailItem;
if (addrEntry != null)
{
//Set Sender property.
mail.Sender = addrEntry;
mail.Display(false);
}
}
Следующий метод, , похож на CreateMailItemFromAccount
, за исключением того, CreateMeetingRequestFromAccount
что он создает AppointmentItem вместо MailItem и связывает AppointmentItem с учетной записью с помощью его свойства SendUsingAccount. CreateMeetingRequestFromAccount
создает AppointmentItem в папке Calendar учетной записи, хранилище доставки которой по умолчанию совпадает с хранилищем для папки, отображаемой в активном проводнике. CreateMeetingRequestFromAccount
Сначала определяет соответствующую учетную запись, сопоставляя хранилище текущей папки (полученной из свойства Folder.Store ) с хранилищем доставки по умолчанию для каждой учетной записи (полученной с помощью свойства Account.DeliveryStore ), определенной в коллекции Accounts для сеанса. CreateMeetingRequestFromAccount
затем создает AppointmentItem. Чтобы связать элемент с учетной записью, CreateMeetingRequestFromAccount
назначает эту учетную запись в качестве учетной записи отправки элемента, задав для объекта Account значение свойства SendUsingAccountобъекта AppointmentItem. Назначение свойства SendUsingAccount является важным шагом, так как в противном случае элемент AppointmentItem создается для основной учетной записи. В конце метода CreateMeetingRequestFromAccount
отображается элемент AppointmentItem. Обратите внимание, что если текущая папка не находится в хранилище доставки, CreateMeetingRequestFromAccount
просто создает AppointmentItem для основной учетной записи сеанса.
private void CreateMeetingRequestFromAccount()
{
Outlook.Account acct = null;
// Get the store for the current folder.
Outlook.Folder folder =
Application.ActiveExplorer().CurrentFolder
as Outlook.Folder;
Outlook.Store store = folder.Store;
Outlook.Accounts accounts =
Application.Session.Accounts;
// Match the delivery store of each account with the
// store for the current folder.
foreach (Outlook.Account account in accounts)
{
if (account.DeliveryStore.StoreID ==
store.StoreID)
{
acct = account;
break;
}
}
// Create AppointmentItem. Account is either the primary
// account or the account with a delivery store
// that matches the store for the current folder.
Outlook.AppointmentItem appt =
Application.CreateItem(
Outlook.OlItemType.olAppointmentItem)
as Outlook.AppointmentItem;
appt.MeetingStatus =
Outlook.OlMeetingStatus.olMeeting;
if (acct != null)
{
//Set SendUsingAccount property.
appt.SendUsingAccount=acct;
appt.Display(false);
}
}
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.