正在将Outlook连接到Visual Studio



编程新手,尝试创建此项目。我输入了一个文本文件,其中有一个用户名列表。我希望代码从文本文件中获取用户名,并在Outlook中查找它们,以给我一个";真";或";false";如果在系统中存在与用户匹配的情况。如何使用MAPI或API将Outlook连接到代码?到目前为止,我的代码如下。

namespace QC_OUTLOOK
{
internal class Program
{
private static object MessageBox;
private static object objFile;
private static int i;
private static object Strings;
private static object response;
static int Main(string[] args)
{
string filePath = @"C:UsersDocumentsQCUser_list.txt";
// string[] lines = File.ReadAllLines(filePath);
List<string> lines = new List<string>();
lines = File.ReadAllLines(filePath).ToList();
using (StreamWriter streamWriter = File.CreateText(filePath));
foreach (String line in lines)
{
Console.WriteLine(line);
}
Console.ReadLine();
{
Outlook._Application oApp = new OutLook.Application();
//Get MAPI namespace
Outlook.AddressLists oNS = oNS.AddressLists;
Outlook.AddressList oGal = oALs.Item("Global Address List");
//Get all entries
Outlook.AddressEntries oEntries = oGal.AddressEntries;
// Get first user found 
Outlook.AddressEntry oEntry = oEntries.GetFirst();
Outlook_UserName_Output = "";
response = sa.GetAllUsers;
Console.WriteLine(response);
//
UserCount = 0;
UsersFound = 0;
LastNameMatches = 0;
InactiveUser_Count = 0;
Inconsistent_EmailAddrs  = 0;
GIS_UserCount = 0;
TodaysDate = DateTime.Today;
object value = objFile.WriteLine("Date:" + TodaysDate);
object value1 = objFile.WriteLine("QC_UserID, QC_FullName, OutLook_Last_Name, OutLook_First_Name");
for (i = 1; i <= Strings.Len(response) ; i++);
Outlook.Application oApp = new Outlook.Application();
// Get the MAPI namespace.
Outlook.NameSpace oNS = oApp.GetNamespace("mapi");
oNS.Logon(Missing.Value, Missing.Value, false, true);

Outlook.MAPIFolder oInbox = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);

}

DataTable dt = new DataTable();
dt.Columns.Add("FirstName");
dt.Columns.Add("LastName");

Microsoft.Office.Interop.Outlook.Items OutlookItems;
Microsoft.Office.Interop.Outlook.Application outlookObj = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.MAPIFolder Folder_Contacts = (MAPIFolder)outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
OutlookItems = Folder_Contacts.Items;
foreach (var item in OutlookItems)
{
var contact = item as ContactItem;
if (contact != null)
{
DataRow dr = dt.NewRow();
dr["FirstName"] = contact.FirstName;
dr["LastName"] = contact.LastName;
dt.Rows.Add(dr);
}

首先,在代码中多次创建新的Outlook应用程序实例不是最好的方法:

Microsoft.Office.Interop.Outlook.Application outlookObj = new Microsoft.Office.Interop.Outlook.Application();

Outlook是一个单例。不能在系统上同时运行两个Outlook实例。因此,我建议保留应用程序对象,并在可能的情况下重用它。

遍历Outlook文件夹中的所有项目并不是一个好主意。而是使用Items类的Find/FindNextRestrict方法。在以下文章中阅读更多关于这些方法的信息:

  • 如何:使用Restrict方法检索Outlook联系人项目
  • 如何:使用Find和FindNext检索Outlook联系人项目

但最好使用NameSpace.CreateRecipient方法,该方法创建一个Recipient对象,可用于根据地址簿验证给定名称。Recipient.Reve方法尝试根据通讯簿解析创建的Recipient对象。这正是你想要的!

相关内容

  • 没有找到相关文章

最新更新