背景:公司里有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. 010-java 表单方式或者base64方式上传图片,后端使用nutz的post转发图片到另一个请求

    本地上传图片 方式一.使用表单方式上传-enctype <form enctype="multipart/form-data" method="post" ...

  2. 【CART与GBDT】

    一.CART(分类回归树)    1.思想:     一种采用基尼信息增益作为划分属性的二叉决策树.基尼指数越小,表示纯度越高.  2.回归: 每个节点都有一个预测值,预测值等于属于该节点的所有样例的 ...

  3. js或jsp 获取项目路径常用方法

    可以引入一个jsp,这个jsp的内容如下: <%@page pageEncoding="UTF-8" contentType="text/javascript; c ...

  4. vue中keep_alive使用

    总结:keep-alive 是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM.结合vue-router中使用,可以缓存某个view的整个内容. 1.在App.vue中添加配 ...

  5. Linux小脚本

    将固定的换包步骤,做成脚本replacePackage.sh,赋予执行权限(chmod +x   replacePackage.sh).这样小小自动化也能节约时间呀. replacePackage.s ...

  6. Windows下解压分卷压缩方法

    各种压缩分卷格式 rar分卷格式是*.part1.rar,*.part2.rar 等等. 360分卷压缩出来的文件的名字是*.zip.001.*.zip002 等等. WinZip分卷压缩出来的文件名 ...

  7. 对接口(interface)的思考

    接口,java中用关键字interface定义.今天学习java基础API时,发现一个特点:每个包中都定义了一堆的接口,感觉有马克思主义中提到的“上层建筑”的味道.接口就是为需要实现的功能定一个基调, ...

  8. python导入csv/txt文件

    1. 导入csv文件 ### python导入csv文件的三种方法 ```python #原始的方式 lines = [line.split(',') for line in open('iris.c ...

  9. cocos2d-x JS 加载播放Studio帧动画的两种方法

    昨天懵逼的搞了两个多小时(百度无果/没看出什么矛头),自己琢磨总算搞出来了   1.  var levelUpJson = ccs.load("res/LevelUp.json") ...

  10. (已解决)Xcode 运行报错: clang: error: unknown argument: '-websockets'

    报错内容: 解决办法: