package com.ckn.web.main;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Properties;
import javax.mail.Flags.Flag;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.MimeUtility;
import com.sun.mail.imap.IMAPMessage;
import com.sun.mail.util.BASE64DecoderStream;
public class ImapPullMail {
public static void main(String[] args) throws Exception{
//0、各种连接配置
Properties props=new Properties();
props.setProperty("mail.store.protocol", "imap");
props.setProperty("mail.imap.host", "imap.163.com");
props.setProperty("mail.imap.port", "143");
//1、创建Session实例对象
Session session=Session.getInstance(props);
//2、创建IMAP协议的Store对象
Store imapStore=session.getStore("imap");
//3、连接邮件服务器
imapStore.connect("12456kcc@163.com", "snsjxnsdfsxd45");
//4、获得收件箱
Folder folder=imapStore.getFolder("INBOX");
//5、以读写的方式打开收件箱
folder.open(Folder.READ_WRITE);
//6、获得收件箱的邮件列表
Message[] messages=folder.getMessages();
//7、收件箱的状态//
System.out.println("收件箱中共"+messages.length+"封邮件!");
System.out.println("收件箱中共"+folder.getUnreadMessageCount()+"封未读邮件!");
System.out.println("收件箱中共"+folder.getNewMessageCount()+"封新邮件!");
System.out.println("收件箱中共"+folder.getDeletedMessageCount()+"封已删除邮件!");
//8、解析邮件箱邮件
System.out.println("***************");
for(Message message:messages){
//读过的略过
if(message.getFlags().contains(Flag.SEEN)) continue;
System.out.println("***********************");
IMAPMessage imapMsg=(IMAPMessage) message;
String subject=MimeUtility.decodeText(imapMsg.getSubject());
System.out.println("当前邮件 标题:"+subject);
//imapMsg.writeTo(System.out);
//获取邮件外包装 , 包括多个邮件内容块 , 业务场景是 转发的内容 用到这个结构
//Multipart multipart=(Multipart) message.getContent();
Object wrapContent=message.getContent();
if(wrapContent instanceof Multipart){
System.out.println("包含多个块");
Multipart outMultipart=(Multipart) wrapContent;
int partCount=outMultipart.getCount();
for(int i=0;i<partCount;i++){
// Part 类似Message 的东西
Part nPart=outMultipart.getBodyPart(i);
Object nContent=nPart.getContent();
//System.out.println(nContent.getClass().getInterfaces());
//遍历 邮件内容 块(可能直接是文本块 、文本 HTML块 、或者附件块...通常情况下是文本块 、文本HTML块和附件块 )
if(nContent instanceof Multipart){
//对文本HTML块的处理
Multipart nMultipart=(Multipart) nContent;
int nPartCount=nMultipart.getCount();
for(int k=0;k<nPartCount;k++){
Part nnPart=nMultipart.getBodyPart(k);
System.out.println("内容类型: "+nnPart.getContentType());
System.out.println("小包裹内容: "+nnPart.getContent());
}
}else if(nContent instanceof BASE64DecoderStream){
//对附件块的处理
String disposition=nPart.getDisposition();
if(disposition!=null){
String fileName=MimeUtility.decodeText(nPart.getFileName());
String contentType=MimeUtility.decodeText(nPart.getContentType());
System.out.println("i:"+i+" "+"fileName->"+fileName
+"\ncontentType->"+contentType);
InputStream in=nPart.getInputStream();
FileOutputStream out=new FileOutputStream("D:\\Users\\jxn\\Desktop\\TRANSFILE\\"+fileName);
int len;
byte[] readBytes=new byte[1024];
while((len=in.read(readBytes))!=-1){
out.write(readBytes,0,len);
}
out.close();
in.close();
System.out.println("文件下载完成");
}
}else{
//直接文本块的处理
System.out.println("i:"+i+" "+nContent.getClass().getName());
System.out.println(nContent);
}
}
}else{
System.out.println("纯文本邮件");
System.out.println(message.getContent());
}
imapMsg.setFlag(Flag.SEEN, false); //这段代码一定要放在后面执行,服务器默认拉取后就将邮件设为已读了,如放在前面,在拉取数据后就被默认改成读过状态了,故一定要放在读过后执行; 该方法作用: 设置已读标志 第二个参数如果设置为true,则将修改反馈给服务器。false则不反馈给服务器
System.out.println("*********************************************");
}
//9、关闭资源
folder.close(true);
imapStore.close();
}
}
- 浏览: 52353 次
- 性别:
- 来自: 北京
相关推荐
使用javamail通过imap协议收到Exchange2007中的邮件; 其他的邮箱也可以使用,但主要实现了对Exchange2007的收取。
全功能java收取邮件程序,包括收取附件,含有main方法可以测试,pop3协议和imap协议都支持 Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null); Store ...
功能特点: ...邮件协议处理: 需要处理邮件收发过程中的各种协议,确保邮件能够正常发送和接收。 附件处理: 需要支持不同类型的邮件附件,确保能够准确发送和接收附件。 安全性意识: 需要考虑邮件传输
javamail 实例 获取pop3或者imap方式获取邮件信息,配置运行MailHelper即可.
资源包括邮件的发送、邮件的接收、查看邮件总数量和未读邮件数以及查看未读邮件并标记已读,还有我自己编写的简单的文档。希望能帮助需要帮助的筒子们
java收发邮件的例子,打开项目,入口在:MailHelper中,修改服务器配置即可使用。支持pop3和imap。
解决javamail 用imap 主题(标题)过长 会出异常
Java_chilkat-9.4.0破解版支持代理收发邮件
javamail smtp imap收发电子邮件,发送附件,联系人管理!
邮件服务器是Magic winmail试用版 能收发附件的哦 不过还没有还没有做注册用户的功能哦 因为不会文件的操作,以后在做吧 开发工具是eclipse+tomcat6.0 希望与大家交流 我是江西九江学院的学生 哈哈 QQ:86506685
JavaMail教程:使用IMAP协议接收并解析电子邮件 - 为程序员服务.zip
文章目录邮箱相关的概念邮件收发协议邮件客户端邮件服务器邮件收发简要过程使用Java发送邮件(JavaMail的使用)1.jar包相关2.使用案例3.使用案例中相关说明 邮箱相关的概念 邮件收发协议 发送邮件协议:SMTP(简单...
发送邮件的类需要提供发件人、收件人、邮件主题和正文,然后通过JavaMail API...接收邮件的类需要提供收件人的邮箱地址和密码,然后通过JavaMail API连接到IMAP服务器,获取收件箱中的所有邮件,并返回一个邮件列表。
JavaMail API是SUN为Java开发者提供对电子邮件处理的延伸,能用于读取、编写和发送电子消息的包(标准扩展)。为管理电子邮件提供了统一的应用编程接口,它可以处理各种e-mail格式(包括IMAP、POP、SMTP以及MIME)和...
邮件接收功能: 系统能够从用户指定的邮箱服务器上接收邮件,并将邮件内容显示在用户界面上。 使用JavaMail API中的POP3(Post Office Protocol 3)或者IMAP(Internet Message Access Protocol)协议来从邮件...
这个压缩文件包(.rar)包含了一套完整的基于Javamail的邮件收发系统,是针对大学生...通过这个项目,学生能够学习到如何使用Java编程语言结合SMTP、IMAP等邮件传输协议来实现邮件的发送和接收,同时也能够了解到如何
gavamail是在JAVA中实现的POP3 / IMAP服务器,用于通过您喜欢的邮件客户端读取gmail电子邮件。 目前仅实现POP3,但我也希望实现IMAP。 使用由g4j和libgmail项目提供的库。
JavaMail API是Sun公司为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如:SMTP、POP3、IMAP。开发人员使用JavaMail API编写邮件处理软件时,无须考虑...
1)账号配置支持主流协议,如(IMAP、SMTP、POP3) 2)配置账号成功后,1)默认拉取该账号30天内历史邮件 2)启动新线程监听未来新邮件 3)实现了签名、草稿箱、发件箱功能 4)写信的时候,支持各种格式 5)收信的时候...
它支持多种邮件协议,如SMTP、POP3和IMAP,可以实现邮件的发送、接收、阅读和存储等功能。同时,它还提供了一个简洁的用户界面,用户可以通过网页进行注册、登录、发送邮件、接收邮件等操作。此外,MeyboMail Web...