背景:公司里有eHR系统,有网域,IBM Lotus Notes邮件系统,新人入职会在eHR系统里提前建好档案,网域帐号、邮箱帐号均会在入职前提前建好,因为邮箱帐号是晚于eHR建档的,因此在eHR建档时邮箱地址都是没有维护的,即使有维护,也可能维护是员工的个人邮箱,需要统一维护成公司的邮箱地址。

公司人资部虽然有要求员工自行维护个人信息,包括邮箱地址,但是收效甚微,因此才想到能否实现从LDAP中直接获取邮箱地址信息并与eHR同步?

我咨询了一下公司的邮件系统负责人,Notes有没有接口可以查到每个人的邮箱,他说应该是可以的,因为反垃圾邮件系统就设过,里面有设服务器和端口,既然反垃圾邮箱系统可以从Notes里获邮箱地址,其他系统应该也可以。

接下来就搜索C#访问LDAP,这方面的资料还算不少,网上找一找,很容易写,大致就是以下几行,查询的结果就在result变量里。

DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://ip:port", @"user", "password", AuthenticationTypes.Anonymous);

DirectorySearcher searcher = new DirectorySearcher(directoryEntry)
{
    Asynchronous = false,
    CacheResults = false,
    ClientTimeout = new TimeSpan(0, 0, 1),
    Filter = "((cn=" + empName + "))"
}; searcher.PropertiesToLoad.AddRange(new[] { "cn", "sn", "displayName", "mail", "department", "company" });
SearchResultCollection result = searcher.FindAll();

  

有几个地方需要注意

1、LDAP后面的地址错误,会提示”该服务器不可操作“

2、验证方式不对,会提示”出现了一个协议错误"或者“该服务器不可操作”,我选的是AuthenticationTypes.Anonymous匿名方式,这种方式用户名和密码是可以不用输的。

3、Filter就是要查找的条件了,怎么写这个条件,可以下载一款软件,LDAPSoft LDAP Browser,用这个就可以很清楚的看到公司 LDAP的层次架构,知道该如何下条件了。

以上代码在测试工程中调试,很快就成功了,接下来将此段代码封装成web service,然后就利用上一章节所讲的Sql Server里Call Web service的技术,写一个Job,循环获取公司里邮箱为空或者非公司邮箱地址的人员,调用该接口实现同步,这样就能实现eHR同LDAP的邮箱地址同步了。

因为公司里会有员工同名的问题,Notes里是可以将工号输入进去的,因为工号是唯一的,按工号找邮箱地址就会非常准确了。

在用.net写web service时,访问时报错,提示“因 URL 意外地以“/****”结束,请求格式无法识别。”,这个错误只要在web.config配置下就可以了

web.config文件中的 <system.web> 节点下加入:
<webServices>
    <protocols>
        <add name= "HttpPost"/>
        <add name= "HttpGet"/>
    </protocols>
</webServices>

不过这段落是有风险的,如果是查询的Web Service还好,但是如果是更新或删除类的web service,被人知道后可以随意操作乱改你的数据。

eHR自动同步获取LDAP中的邮箱地址的更多相关文章

  1. 如何使用JAVA语言抓取某个网页中的邮箱地址

    现实生活中咱们常常在浏览网页时看到自己需要的信息,但由于信息过于庞大而又不能逐个保存下来. 接下来,咱们就以获取邮箱地址为例,使用java语言抓取网页中的邮箱地址 实现思路如下: 1.使用Java.n ...

  2. 制作一个文档同步工具,自动同步到gitee中。。。

    之所以要做这个工具是为了让自己可以随时用电脑时能记录日常工作或生活.一般只需要简单记录下就行了.这样我在家里的和公司里的记录都能同步看到. 这样后期整理的时候看到几个关键词就能想起来具体的事情,有的也 ...

  3. php获取内容中第一张图片地址

    $note = '<img src="http://images.xxx.com/article/cover/201601/20/141539161273.png?imageView2 ...

  4. ARPSpoofing教程(二) - 获取网络设备中的详细地址信息

    WinPcap中文API  http://www.ferrisxu.com/WinPcap/html/index.html 1: #include"pcap.h" 2: #incl ...

  5. iOS webview 获取html中的图片地址

    //js代码,声明1个数组,对img 进行遍历,采用,分割多个url NSString * getAllImages = @"var str = new Array();" &qu ...

  6. asp.net mvc 注册中的邮箱激活功能实现(一)

    基本流程图 注册页面就不再写出,现在将发送邮件的代码粘贴出来 public ActionResult SendEmial() { ; string validataCode = System.Guid ...

  7. asp.net mvc 注册中的邮箱激活功能实现

    基本流程图 注册页面就不再写出,现在将发送邮件的代码粘贴出来   public ActionResult SendEmial() { ; string validataCode = System.Gu ...

  8. 如何在 Xamarin 中快速集成 Android 版认证服务 - 邮箱地址篇

    Xamarin 作为微软提供的移动服务多系统开发平台,成为很多开发者首选的应用开发平台.AppGallery Connect(以下简称 AGC)也在逐步的支持 Xamarin 的 SDK.认证服务也是 ...

  9. IOS 获取通讯录中信息

    获取通讯录中信息 一. 我们设置一个ABAddressBookRef类型的属性addressBook. 二. 要获得通讯录中的信息,我们需要获取访问通讯录的权限. 在运行下面的获取权限的方法的时候,系 ...

随机推荐

  1. Spark代码中设置appName在client模式和cluster模式中不一样问题

    问题 Spark应用名在使用yarn-cluster模式提交时不生效,在使用yarn-client模式提交时生效,如图1所示,第一个应用是使用yarn-client模式提交的,正确显示我们代码里设置的 ...

  2. 【LeetCode每天一题】Reverse Integer(反转数字)

    Given a 32-bit signed integer, reverse digits of an integer. Example 1:                              ...

  3. 【漏洞公告】高危:Windows系统 SMB/RDP远程命令执行漏洞

    2017年4月14日,国外黑客组织Shadow Brokers发出了NSA方程式组织的机密文档,包含了多个Windows 远程漏洞利用工具,该工具包可以可以覆盖全球70%的Windows服务器,为了确 ...

  4. CentOS6.5安装sqlite3

    1.下载安装包:https://www.sqlite.org/download.html 2.解压 [root@mycentos ~]# tar xzvf sqlite-snapshot-201809 ...

  5. Ajax(django)

    Ajax AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 JavaSc ...

  6. Linux基础(一)流程控制

    Shell 流程控制 if 语句语法格式1: 写成一行(适用于终端命令提示符):if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo ...

  7. java基础(一) -语法

    基本语法 编写Java程序时,应注意以下几点: 大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的. 类名:对于所有的类来说,类名的首字母应该大写.如果类名由若干单词组 ...

  8. template.js简单入门

    template.js是一款开源的JavaScript模板引擎,用来渲染页面的. github地址 https://github.com/yanhaijing/template.js 下载templa ...

  9. 实验:记录一则删除GI的过程

    环境: RHEL 6.5 + Oracle GI 11.2.0.4 (2 nodes) 参考MOS文档 How to Deconfigure/Reconfigure(Rebuild OCR) or D ...

  10. 28.json数组,select选择,input输出对应数据

    效果:选择对应的车类,下面的input会实时出现车价. html: <form action="" class="priceModelform1"> ...