Java 读取Exchange server 未读邮件数量

本文介绍如何通过Java程序获取Exchange服务器上指定用户的未读邮件数量,并提供了完整的代码实现及jar包下载链接。

1、准备工作

一、打开exchange shell,使用如下命令提升administrator账号为exchange超级管理,让它具有对其他用户操作的权限
New-ManagementRoleAssignment -Name:impersonationAssignmentName -Role:ApplicationImpersonation -User:administrator

注:如果以上命令执行失败,请尝试先执行下面这条命令,在执行上面的

Remove-ManagementRoleAssignment "impersonationAssignmentName"


二、exchange server 可以进行web访问
https://xxxx.com/EWS/Exchange.asmx
https://xxxx.com/owa
三、添加邮箱账户

添加多个邮箱账户,同时给发这几个用户分别发送不同数量的邮件,记得不要查看,因为要读取未读邮件


2、关键代码

package com.codesql.utils;

import java.net.URI;

import microsoft.exchange.webservices.data.ConnectingIdType;
import microsoft.exchange.webservices.data.ExchangeCredentials;
import microsoft.exchange.webservices.data.ExchangeService;
import microsoft.exchange.webservices.data.ExchangeVersion;
import microsoft.exchange.webservices.data.Folder;
import microsoft.exchange.webservices.data.ImpersonatedUserId;
import microsoft.exchange.webservices.data.WebCredentials;
import microsoft.exchange.webservices.data.WellKnownFolderName;

public class ReaderExchanageUnreadMail {
    // aduser=administrator
    // adpass=密码
    // addomain=域的名字
    // suffix=@xxx.com
    // uri=https://mail.xxx.com/EWS/Exchange.asmx
    // sid 被查询用户的名称 
    public String getCount(String aduser, String adpass, String addomain, String uri, String suffix, String sid) throws Exception {
        String count = "0";
        ExchangeService service = new ExchangeService(
                ExchangeVersion.Exchange2010_SP1);
        ExchangeCredentials credentials = new WebCredentials(aduser, adpass,addomain);
        //ExchangeCredentials credentials = new WebCredentials("bbbb", "Aa123456","fr");
        service.setCredentials(credentials);
        ImpersonatedUserId other= new ImpersonatedUserId(ConnectingIdType.SmtpAddress, sid+suffix);
        service.setImpersonatedUserId(other);
        service.setUrl(new URI(uri));
        //service.setTraceEnabled(true);
        // 服务地址
        try {
            Folder inbox = Folder.bind(service, WellKnownFolderName.Inbox);
            // 收件箱
            // System.out.println("未读邮件数:" + inbox.getUnreadCount());

            count = inbox.getUnreadCount() + "";
        } catch (Exception e) {
        //  e.printStackTrace();
        }
        return count;
    }
}

当然,为了方便调用,具体代码我已经打包成jar,你可以在文章末尾的链接中下载

3、Reum.jar的使用

public class PropertiesParam {
    private String aduser;
    private String adpass;
    private String addomain;
    private String uri;
    private String suffix;

    public PropertiesParam(String aduser, String adpass, String addomain,
            String uri, String suffix) {
        super();
        this.aduser = aduser;
        this.adpass = adpass;
        this.addomain = addomain;
        this.uri = uri;
        this.suffix = suffix;
    }
    // 省略 get/set
    // toSting();
}

给ajax调用的方法

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String identify = "0"; // 未读邮件数量

        String sid = request.getParameter("sid"); // sid 邮箱用户名称
        ReaderExchanageUnreadMail  reum = new ReaderExchanageUnreadMail();
        try {
            identify = reum.getCount(initparam.getAduser(), initparam.getAdpass(),initparam.getAddomain()
                    , initparam.getUri(), initparam.getSuffix() , sid);
            System.out.println("count  " + identify);
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out = response.getWriter();
            out.print(identify);
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

jar下载地址:链接: https://pan.baidu.com/s/1SOioBPlEDyTl1qqCHjMDmg 密码: 3qh1
备用下载地址:https://download.youkuaiyun.com/download/immortalitywang/10401841


参考链接:https://blog.youkuaiyun.com/feihu19851111/article/details/17135825

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值