大家好,小弟公司是使用OUTLOOK(大部份員工)或OUTLOOK EXPRESS(少部份員工)。
◎目前製做OUTLOOK通訊錄的方式如下述
分公司自行編輯WAB通訊錄(BY OUTLOOK EXPRESS),
交由總公司統一匯整所有分公司WAB通訊錄,再匯入OUTLOOK通訊錄(成為集團版通訊錄)。
◎目前困難點
1.匯整WAB通訊錄時(有匯出入動作)經常發生資料遺失,必須再三比對,並人工修正
2.員工須手動匯入集團版通訊錄,因程序複雜經常抱怨連連
3.承第2點,導致員工經常不更新通訊錄
◎公司目前是使用LINUX MAIL SERVER,在CLIENT使用單機版的OUTLOOK或OUTLOOK EXPRESS情形下。
請大家建議更好的更新方法,謝謝。
我公司也是用單機版outlook / Windows live mail ,極少部份人用thunderbird mail,還有iphone跟android手機
ActiveDirectory主機上登載的資料不全,人員的通訊資料都存放在HR資料庫裡,目前通訊錄的產生分成三種版本
以下提供我用MAPI的方法簡述,至於怎麼用MAPI,請自行上網查,長篇大論的放這裡會被嫌棄
private static void 新增連絡人(string 工號, string 部門, string 姓名, string 郵箱)
{
Outlook.Application outlookApp = new Outlook.Application();
Outlook.NameSpace outlookNS = outlookApp.GetNamespace("MAPI");
if (!連絡人存在嗎(郵箱, false))
try
{
Outlook.ContactItem newContact = (Outlook.ContactItem)outlookApp.CreateItem(Outlook.OlItemType.olContactItem);
newContact.LastName = $"{姓名}";
newContact.FirstName = $"{工號}";
newContact.Email1Address = $"{姓名}{工號} ({郵箱})";
newContact.Email1DisplayName = $"{姓名}{工號} {郵箱}";
newContact.CompanyName = "超人集團";
newContact.Department = 部門;
newContact.FileAs = $"{姓名}{工號}@超人集團";
newContact.Account = $"{姓名}{工號}@超人";
newContact.Save();
}
catch
{
Console.WriteLine("錯誤: 這個連絡人[{0}]無法新增(可能存在)", 姓名);
}
}
以上方法不會破壞個人通訊錄內容,只有公司員工才會被增減
有得分的話,再加送"新增系統排程"和取得系統管理員權限的方法
thunderbird吃系統通訊錄,跟outlook同一方法解決
每日(有開機的話)只跑一次,不會真的每50分鐘執行一次
清理已經存在的全部公司員工→再新增在職 = 不重覆+移除離職
private static void 清理Ol_超人連絡人()
{
Outlook.Application outlookApp = new Outlook.Application();
Outlook.NameSpace outlookNS = outlookApp.GetNamespace("MAPI");
Outlook.MAPIFolder contactsFolder = outlookNS.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderContacts);
Outlook.Items contactItems = contactsFolder.Items;
foreach (var acc in contactItems)
{
string otMail = ((Outlook.ContactItem)acc).Email1Address.ToLower().Trim();
string otCompanyName = ((Outlook.ContactItem)acc).CompanyName.Trim();
if (acc is Outlook.ContactItem && otMail != null && otMail.ToString().Trim().Contains("@supermen.com.tw") && otCompanyName.Contains("超人集團"))
{
//只刪自動產生的通訊錄名單,不刪別的
((Outlook.ContactItem)acc).Delete();
}
}
}
之前使用過一種方式。
建立一個郵件帳號,專門用來登錄通訊錄的,每個人都設定IMAP的方式去同步這個帳號,但是要記的設定預設寄信帳號為本人的帳號