iT邦幫忙

0

Outlook 如何通訊錄同步

  • 分享至 

  • xImage

我是一個新進的菜鳥MIS
目前公司使用某企業信箱
使用Outlook POP/SMTP進行收發信
同事詢問是否有統一的通訊錄能自動同步
只要一個人負責維護新進同仁或離職同仁資訊
公司所有人都能同步通訊錄
之前找過匯出匯入方式
想詢問是否有其他方法
公司沒有AD,也沒使用Exchange
目前只能個人自己建自己的通訊錄
詢問大家是否有好的方法!! 感謝

AD LDS 試試 ?
harrytsai iT邦新手 1 級 ‧ 2022-07-06 09:11:33 檢舉
既然是企業信箱,那就一定有公用通訊錄
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
柳丁柚
iT邦新手 1 級 ‧ 2022-07-05 15:00:52
菜鳥MIS iT邦新手 5 級 ‧ 2022-07-05 15:37:37 檢舉

因公司使用Office 365 介面不太一樣,不太會設定。
最下面提到Outlook Hotmail Connector 但似乎已下載不到。
感謝回覆

0
kw6732
iT邦研究生 5 級 ‧ 2022-07-05 15:02:55

可以研究一下 LDAP + Radius 相關的關鍵字。

下方連結可以參考
https://www.richesinfo.com.tw/index.php/mxmail/mxmail-manuals/account-management/ldap-setup

菜鳥MIS iT邦新手 5 級 ‧ 2022-07-05 15:35:52 檢舉

查看公司企業信箱並沒有LDAP功能,是否有其他方法? 感謝

1
japhenchen
iT邦超人 1 級 ‧ 2022-07-05 15:52:42

有人會寫程式嗎?如果會,用MAPI,把HR資料庫裡的員工電子郵箱變成電腦上的連絡人清單,是OK的

using Outlook = Microsoft.Office.Interop.Outlook;

private static void 新增連絡人(string 工號, string 部門, string 姓名, string 郵箱)
{
    Outlook.Application outlookApp = new Outlook.Application();
    Outlook.NameSpace outlookNS = outlookApp.GetNamespace("MAPI");
    int nowhour = DateTime.Now.Hour;
    if (!連絡人存在嗎(郵箱, false))
        try
        {
            Outlook.ContactItem newContact = (Outlook.ContactItem)
                    outlookApp.CreateItem(Outlook.OlItemType.olContactItem);
            newContact.LastName = $"{姓名}";
            newContact.FirstName = $"{工號}";
            newContact.Email1Address = $"{姓名}{工號} ({郵箱})";
            newContact.Email1DisplayName = $"{姓名}{工號} {郵箱}";
            newContact.CompanyName = "XX集團";
            newContact.Department = 部門;
            newContact.FileAs = $"{姓名}{工號}@XX集團";
            newContact.Account = $"{姓名}{工號}@XX";
            newContact.Save();
        }
        catch
        {
            Console.WriteLine("錯誤: 這個連絡人[{0}]無法新增(可能存在)", 姓名);
        }
}

private static bool 連絡人存在嗎(string 信箱, bool ifDel = false)
{
    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;
    try
    {
        Outlook.ContactItem contact =
            (Outlook.ContactItem)contactItems.
            Find(String.Format("[Email1Address]='{0}'", 信箱));
        if (contact != null)
        {
            if (ifDel)
            {
                contact.Delete();
                while (true)
                {
                    if (!連絡人存在嗎(信箱, ifDel)) break;
                }
                return false;
            }
            else
            {
                return true;
            }
        }
        else
        {
            return false;
        }
    }
    catch (Exception ex)
    {
        return false;
    }
}


至於HR資料庫要怎麼爬,兄弟這是你們要自己努力的~~

我設定工作排程,每天中午吃飯時間執行一次這支程式,500人約2分鐘

PS:這支程式在OFFICE2013到365都測試OK
https://ithelp.ithome.com.tw/upload/images/20220705/201179549B7jS4Sk4v.pnghttps://ithelp.ithome.com.tw/upload/images/20220705/20117954i9TGprlDUS.png

看更多先前的回應...收起先前的回應...
kw6732 iT邦研究生 5 級 ‧ 2022-07-05 16:14:55 檢舉

好解方 受教了~~

菜鳥MIS iT邦新手 5 級 ‧ 2022-07-05 16:52:08 檢舉

公司有Windows Server 是否可以在主機建立通訊錄,讓所有使用者透過IP去下載?
程式部分看不太懂...也不知道如何運行,是從Office 365設定還是直接執行即可? 這方法是否也是需要用到Exchange? 謝謝
https://ithelp.ithome.com.tw/upload/images/20220705/20150314VrpVKdm8NV.jpg

不用AD/LDAP,只是把你們自己的資料庫裡的EMAIL導出成個人連絡人內容而已,MAPI可獨立執行,不用同時也開OUTLOOK/365,我個人也是用365,其他人用OFFICE 2013裡的OUTLOOK,完全支援沒問題

當然不建議寫個直接連資料庫抓資料庫的程式做這件事,如果你的CODING能力OK的話,替你們自己的資料庫,建個WEB API!讓你這支通訊錄同步工具有辦法不透過1433就可以抓到HR資料

很難懂?那你該加油了,不然會吃很久的菜鳥包

我要發表回答

立即登入回答