728x90
반응형
728x170
▶ CustomAddIn.cs
using Microsoft.Office.Interop.Outlook;
using System;
using System.Runtime.InteropServices;
namespace TestProject
{
/// <summary>
/// 커스텀 애드인
/// </summary>
public partial class CustomAddIn
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 애플리케이션
/// </summary>
private Application application = null;
/// <summary>
/// PR_ICON_INDEX
/// </summary>
private const string PR_ICON_INDEX = "http://schemas.microsoft.com/mapi/proptag/0x10800003";
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Private
//////////////////////////////////////////////////////////////////////////////// Event
#region 커스텀 애드인 시작시 처리하기 - CustomAddIn_Startup(sender, e)
/// <summary>
/// 커스텀 애드인 시작시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void CustomAddIn_Startup(object sender, EventArgs e)
{
this.application = Application;
this.application.NewMailEx += application_NewMailEx;
}
#endregion
#region 커스텀 애드인 셧다운시 처리하기 - CustomAddIn_Shutdown(sender, e)
/// <summary>
/// 커스텀 애드인 셧다운시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void CustomAddIn_Shutdown(object sender, EventArgs e)
{
}
#endregion
#region 애플리케이션 신규 메일 수신시 처리하기 (확장) - application_NewMailEx(entryIDCollection)
/// <summary>
/// 애플리케이션 신규 메일 수신시 처리하기 (확장)
/// </summary>
/// <param name="entryIDCollection">엔트리 ID 컬렉션</param>
private void application_NewMailEx(string entryIDCollection)
{
string[] entryIDArray = entryIDCollection.Split(',');
foreach(string entryID in entryIDArray)
{
MailItem mailItem = this.application.ActiveExplorer().Session.GetItemFromID(entryID);
if(mailItem != null)
{
SetExtendedPropertyValue(mailItem, PR_ICON_INDEX, 311);
mailItem.Save();
}
}
}
#endregion
//////////////////////////////////////////////////////////////////////////////// Function
#region VSTO에서 생성한 코드
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(CustomAddIn_Startup );
this.Shutdown += new System.EventHandler(CustomAddIn_Shutdown);
}
#endregion
#region 확장된 속성 값 구하기 - GetExtendedPropertyValue(mailitem, propertyName, value)
/// <summary>
/// 확장된 속성 값 구하기
/// </summary>
/// <param name="mailitem">메일 항목</param>
/// <param name="propertyName">속성명</param>
/// <param name="value">값</param>
/// <returns>처리 결과</returns>
private bool GetExtendedPropertyValue(MailItem mailitem, string propertyName, ref object value)
{
PropertyAccessor propertyAccessor = null;
try
{
propertyAccessor = mailitem.PropertyAccessor as PropertyAccessor;
value = propertyAccessor.GetProperty(propertyName);
return true;
}
catch(System.Exception)
{
}
finally
{
if(propertyAccessor != null)
{
Marshal.ReleaseComObject(propertyAccessor);
propertyAccessor = null;
}
}
return false;
}
#endregion
#region 확장된 속성 값 설정하기 - SetExtendedPropertyValue(mailItem, propertyName, value)
/// <summary>
/// 확장된 속성 값 설정하기
/// </summary>
/// <param name="mailItem">메일 항목</param>
/// <param name="propertyName">속성명</param>
/// <param name="value">값</param>
/// <returns>처리 결과</returns>
private bool SetExtendedPropertyValue(MailItem mailItem, string propertyName, object value)
{
PropertyAccessor propertyAccessor = null;
try
{
propertyAccessor = mailItem.PropertyAccessor as PropertyAccessor;
propertyAccessor.SetProperty(propertyName, value);
return true;
}
catch
{
}
finally
{
if(propertyAccessor != null)
{
Marshal.ReleaseComObject(propertyAccessor);
propertyAccessor = null;
}
}
return false;
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > Outlook' 카테고리의 다른 글
[C#/OUTLOOK] Explorer 인터페이스 : Selection 속성을 사용해 선택 메일 항목 열거 가능형 구하기 (0) | 2021.07.08 |
---|---|
[C#/OUTLOOK] 메일 컨텍스트 메뉴에서 커스텀 컨텍스트 메뉴 추가하기 (0) | 2021.07.05 |
[C#/OUTLOOK] 폴더 컨텍스트 메뉴에서 커스텀 컨텍스트 메뉴 추가하기 (기능 개선) (0) | 2021.07.05 |
[C#/OUTLOOK] 폴더 컨텍스트 메뉴에서 커스텀 컨텍스트 메뉴 추가하기 (0) | 2021.07.04 |
[C#/OUTLOOK] MAPIFolder 인터페이스 : 폴더 아이콘 설정하기 (0) | 2021.07.02 |
[C#/OUTLOOK] 신규 메일 수신시 지정 폴더로 이동시키기 (0) | 2021.06.24 |
[C#/OUTLOOK] ExplorerEvents_10_Event 인터페이스 : FolderSwitch/SelectionChange 이벤트 사용하기 (0) | 2021.06.24 |
[C#/OUTLOOK] COMAddIn 인터페이스 : Connect 속성을 사용해 애드인 언로드시키기 (0) | 2021.06.24 |
[C#/OUTLOOK] _Explorer 인터페이스 : Selection 속성을 사용해 선택 메일 항목 열거 가능형 구하기 (0) | 2021.06.24 |
[C#/OUTLOOK] MAPIFolderEvents_12_Event 인터페이스 : BeforeFolderMove/BeforeItemMove 이벤트를 사용해 폴더/메일 삭제/이동 방지하기 (기능 개선) (0) | 2021.06.22 |
댓글을 달아 주세요