android邮件开发包下载地址,【Android】邮件客户端开发:仅仅得到邮件头

【1】功能实现:仅得到邮件头而不下载整个邮件php

初次进入邮箱的时候,若是邮件包含的附件较多的状况下,显示加载会很慢html

用户体验很差,通常设计为仅仅加载邮件头java

File file = new File("uids.txt");

UIDStore uids = new UIDStore();

uids.load(file);

URLName url = new URLName("pop3",

parameters[0],

110,

"",

parameters[1],

parameters[2]);

Session session = Session.getDefaultInstance(System.getProperties(),null);

Store store = session.getStore(url);

store.connect();

POP3Folder inbox = (POP3Folder)store.getFolder("INBOX");

inbox.open(Folder.READ_WRITE);

//重点在这里 开始

FetchProfile profile = new FetchProfile();

profile.add(UIDFolder.FetchProfileItem.UID);

Message[] messages = inbox.getMessages();

inbox.fetch(messages,profile);

//重点在这里 结束

for(int i = 0;i 

{

String uid = inbox.getUID(messages[i]);

if(uids.isNew(uid))

{

System.out.print(i);

System.out.print(". ");

System.out.println(inbox.getMessage(i + 1).getSubject());

}

}

System.out.println("Done.");

uids.store(file);

参考网站:session

【2】工程Demo代码参考fetch

Message[] messages = folder.getMessages(startPosition,

endPosition);

// // add by fnst for i信4.0 邮箱 on 2015-02-10 start

// 从新设计,仅仅只是得到邮件头部信息【邮件地址+邮件时间+邮件是否包含附件+邮件标题】

FetchProfile fp = new FetchProfile();

fp.add(FetchProfile.Item.ENVELOPE);

folder.fetch(messages, fp);

for (int i = 0; (i 

String uid = inbox.getUID(messages[i]);

if (EmailDao.getEmailInfoById(uid) == null) {

try {

saveEmailMsg2DB(handler, inbox, messages, i,startPosition);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

【3】扯点别的网站

1> getContent()的使用注意ui

messgaes.getContent()返回一个Multipart对象,一个Multipart对象包含一个或多个BodyPart对象,来组成邮件的正文部分(包括附件)。url

可是... 使用getContent()会去遍历整封邮件,会将整个邮件下载下来,效率不好spa

2> 邮件头与邮件体

邮件头包含了发件人、收件人、主题、时间、MIME版本、邮件内容的类型等重要信息。每条信息称为一个域,由域名后加“: ”和信息内容构成,能够是一行,较长的也能够占用多行。域的首行必须“顶头”写,即左边不能有空白字符(空格和制表符);续行则必须以空白字符打头,且第一个空白字符不是信息自己固有的,解码时要过滤掉。

邮件体包含邮件的内容,它的类型由邮件头的“Content-Type”域指出。常见的简单类型有text/plain(纯文本)和text/html(超文本)。有时也会出现的multipart类型,是MIME邮件的精髓。邮件体被分为多个段,每一个段又包含段头和段体两部分,这两部分之间也以空行分隔。常见的multipart类型有三种:multipart/mixed, multipart/related和multipart/alternative。

multipart/mixed:附件。

multipart/related:内嵌资源。

multipart/alternative:纯文本与超文本共存。

3> 构造函数

mpRoot = new MimeMultipart("alternative");

mpRoot = new MimeMultipart("related");

mpRoot = new MimeMultipart();【默认是mixed】

4> 很大可能性会遇到的一个报错处理代码

message.setContent(mpRoot);

MailcapCommandMap mc = (MailcapCommandMap) CommandMap

.getDefaultCommandMap();

mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");

mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");

mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");

mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");

mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");

CommandMap.setDefaultCommandMap(mc);

Transport.send(message);

handler.obtainMessage(1).sendToTarget();

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值