王缘林 |
2017-10-13 15:51 |
EXCHANGE连接邮箱,window可以,Linux下连不上
我直接附上代码,window是可以连接的;然而Linux上不知道哪里错了,就是连接不上
linux服务器是上不了外网,但是邮箱服务器是内网的,假如邮箱服务器IP地址是192.192.192.192 端口是444. 账号是33212@catlbattery.com密码是xxxxxx我该怎么设置这部分代码 ExchangeCredentials credentials = new WebCredentials(user, password); service.setCredentials(credentials); service.setUrl(new URI(mailServer));
package test;
import java.io.File; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.text.SimpleDateFormat; import java.util.ArrayList;
import microsoft.exchange.webservices.data.Attachment; import microsoft.exchange.webservices.data.AttachmentCollection; import microsoft.exchange.webservices.data.BodyType; import microsoft.exchange.webservices.data.EmailMessage; import microsoft.exchange.webservices.data.ExchangeCredentials; import microsoft.exchange.webservices.data.ExchangeService; import microsoft.exchange.webservices.data.ExchangeVersion; import microsoft.exchange.webservices.data.FileAttachment; import microsoft.exchange.webservices.data.FindItemsResults; import microsoft.exchange.webservices.data.Folder; import microsoft.exchange.webservices.data.Item; import microsoft.exchange.webservices.data.ItemSchema; import microsoft.exchange.webservices.data.ItemView; import microsoft.exchange.webservices.data.MessageBody; import microsoft.exchange.webservices.data.PropertySet; import microsoft.exchange.webservices.data.SearchFilter; import microsoft.exchange.webservices.data.SortDirection; import microsoft.exchange.webservices.data.WebCredentials; import microsoft.exchange.webservices.data.WebProxy; import microsoft.exchange.webservices.data.WellKnownFolderName;
import org.jsoup.Jsoup; import org.jsoup.nodes.Element; import org.jsoup.select.Elements;
public class ExchangeMailUtil { private String mailServer; private String user; private String password; private String domain;
public ExchangeMailUtil(String mailServer, String user, String password) { this.mailServer = mailServer; this.user = user; this.password = password; }
public ExchangeMailUtil(String mailServer, String user, String password, String domain) { this.mailServer = mailServer; this.user = user; this.password = password; this.domain = domain; }
public static void main(String[] args) throws Exception { // Outlook Web Access路径通常为/EWS/exchange.asmx ExchangeMailUtil mailUtil = new ExchangeMailUtil("https://mail.catlbattery.com/EWS/exchange.asmx", "3222@catlbattery.com", "xxxxxx"); // 接收邮件 ArrayList<EmailMessage> mails = mailUtil.receive(10); for (EmailMessage mail : mails) { System.out.println("邮件标题: " + mail.getSubject()); System.out.println("ID:"+mail.getId()); SimpleDateFormat sdf2= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String sendDate= sdf2.format(mail.getDateTimeReceived()); System.out.println("接收时间: " + sendDate); System.out.println("发送人: " + mail.getFrom().getName() + ", 地址: " + mail.getFrom().getAddress()); System.out.println("已读:" + mail.getIsRead()); System.out.println("大小:"+mail.getSize()); // System.out.println("body:"+mail.getBody().toString()); readBodyText(mail.getBody().toString()); // SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); // 更新已读 // if (!mail.getIsRead()) { // mail.setIsRead(true); // mail.update(ConflictResolutionMode.AlwaysOverwrite); // } //System.out.println("邮件内容 :" + mail.getBody());
// 处理附件 AttachmentCollection attachs = mail.getAttachments(); try { if (mail.getHasAttachments()) { for (Attachment attach : attachs) { if (attach instanceof FileAttachment) { //接收邮件到临时目录 System.out.println(attach.getName()+attach.getSize()); File tempZip = new File("F:/tmp", attach.getName()); ((FileAttachment) attach).load(tempZip.getPath()); } } //删除邮件 //mail.delete(DeleteMode.HardDelete); } } catch (Exception e) { e.printStackTrace(); } System.out.println(); }
// 发送邮件 //mailUtil.send("Subject", new String[] { "xxx@domain.com" }, null, "content");
} private static void readBodyText(String xml) { org.jsoup.nodes.Document doc = Jsoup.parse(xml); Elements body=doc.getElementsByTag("body"); Element div=body.get(0); Elements p=div.getElementsByTag("p"); String text=""; System.out.println(p.size()+"-------行数"); for(int x=0;x<p.size();x++){ String str=p.get(x).text(); if(str.indexOf("www.catlbattery.com")>=0||str.indexOf("Cell")>=0||str.indexOf("Office")>=0){ break; } // Pattern pa= Pattern.compile("[\u4e00-\u9fa5]"); // Matcher m = pa.matcher(p.get(x).text()); // // if(!m.find()){ // continue; // } text=text+p.get(x).text(); } System.out.println("正文:"+text);
}
/** * 收取邮件 * * @param max 最大收取邮件数 * @param searchFilter 收取邮件过滤规则 * @return * @throws Exception */ public ArrayList<EmailMessage> receive(int max, SearchFilter searchFilter) throws Exception { ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2); //设置代理,若没有代理就不需设置 //WebProxy w =new WebProxy("192.168.13.11",8888); //service.setWebProxy(w); ExchangeCredentials credentials = new WebCredentials(user, password); service.setCredentials(credentials); service.setUrl(new URI(mailServer));
//绑定收件箱,同样可以绑定发件箱 Folder inbox = Folder.bind(service, WellKnownFolderName.Inbox); //获取文件总数量 int count = inbox.getTotalCount(); if (max > 0) { count = count > max ? max : count; } //循环获取邮箱邮件 ItemView view = new ItemView(count); //按照时间顺序收取 view.getOrderBy().add(ItemSchema.DateTimeReceived, SortDirection.Descending); FindItemsResults<Item> findResults; if (searchFilter == null) { findResults = service.findItems(inbox.getId(), view); } else { // e.g. new SearchFilter.SearchFilterCollection( // LogicalOperator.Or, new SearchFilter.ContainsSubstring(ItemSchema.Subject, "EWS"), // new SearchFilter.ContainsSubstring(ItemSchema.Subject, "API")) findResults = service.findItems(inbox.getId(), searchFilter, view); } service.loadPropertiesForItems(findResults, PropertySet.FirstClassProperties); ArrayList<EmailMessage> result = new ArrayList<EmailMessage>(); for (Item item : findResults.getItems()) { EmailMessage message = (EmailMessage) item; result.add(message); } return result; }
/** * 收取所有邮件 * * @throws Exception */ public ArrayList<EmailMessage> receive(int max) throws Exception { return receive(max, null); }
/** * 收取邮件 * * @throws Exception */ public ArrayList<EmailMessage> receive() throws Exception { return receive(0, null); }
}
|
|