在带有附件的邮件中,消息的内容是Multipart型,这样我们就需要解析它来得到content和附件(它是发送带附件的邮件的逆向过程)。大家在使用outlook、foxmail这些电子邮件客户端的时候会发现,我们的邮件被从服务器上下载下来并且保存到本地硬盘上了,这种方式方便我们离线浏览邮件。
如何把服务器上的邮件保存到本地。如果有兴趣大家可以编写一个客户端的图形界面来读取保存下来的邮件。
在下面的例子里,向大家介绍如何解析附件。
private void getAttachFile(Part messagePart,BufferedOutputStream writeAttachObj) throws IOException, MessagingException { Object content = messagePart.getContent() ;
try
{
//这种情况下的邮件都是用multi模式发送的,
// 这种模式包括有附件的邮件和用html表示content的邮件
if (content instanceof Multipart)
{
Multipart contentTmp = (Multipart) content ;
//如果是MULTI模式发送的,BodyPart(0).getContent()肯定就是content
System.out.println("content==" + contentTmp.getBodyPart(0).getContent()) ;
//getCount()可以得到content中bodyPart的个数,content就是第一个
//bodyPart,其它的附件按照顺序类推。但是有的时候附件就是另外一个邮件,
//而这个邮件里边可能有其他的附件。下面代码用循环对嵌套情况进行解析。
for (int i = 0 ; i < contentTmp.getCount() ; i++)
{
if (contentTmp.getBodyPart(i).isMimeType("multipart/*"))
{
Multipart multipart = (Multipart) contentTmp.getBodyPart(i).getContent() ;
//这个地方增加循环是为了解决嵌套附件的情况。
for (int k = 0 ; k < multipart.getCount() ; k++)
{
//content也会存在于INPUTSTREAM中。
saveAttacheFile(multipart.getBodyPart(k).getContentType(), multipart.getBodyPart(k).getDisposition(), multipart.getBodyPart(k).getFileName(), multipart.getBodyPart(k).getInputStream(), writeAttachObj);
}
}
else
{
saveAttacheFile(contentTmp.getBodyPart(i).getContentType(), contentTmp.getBodyPart(i).getDisposition(), contentTmp.getBodyPart(i).getFileName(), contentTmp.getBodyPart(i).getInputStream(), writeAttachObj);
}
}
}
//这种情况中邮件是纯文本形式,并且没有附件
else
{
writeAttachObj.write(("content = "+content+"\r\n").getBytes()); writeAttachObj.flush();
}
}
catch (Exception ie)
{
System.out.println("exception====" + ie.getMessage()) ;
}
}
分享到:
相关推荐
Qt pop3自动登陆邮箱接收邮件,并把邮件保存到数据库,附件下载到工程目录。
今天小编就为大家分享一篇关于spring boot定时任务接收邮件并且存储附件的方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
用Delphi2010 实现邮件附件收发功能 TIdPOP3组件简介 TIdPOP3 是用来接收邮件服务器的邮件信息到用户端的一个组件。它实现了RFC 1939协议。 在使用TIdPOP3组件时需设置它的几个成员属性。 Host :指定邮件服务器,...
利用jmail组件发送邮件和接收邮件,主要是上传指定位置的文件到邮件附件,并发送;把邮件附件下载到本地的指定文件夹。
通过Exchange接收发送邮件,可以接收附件和发送附件
使用此软件可对邮件进行适时管理,新建帐户后,可读取指定邮件账户中的邮件,另外还可接收邮件附件,功能类似于Windows中自带的邮件管理程序,通过这个客户端,你将会熟悉了解VB操作邮件的的各种技巧,绝对不容错过...
在android平台下 带附件邮件的接收和发送
将邮件附件接收存到指定位置
利用open pop3组件实现了邮件的接收并可以接收附件,里面还有实例。测试过的,可以用的
可以接收邮件服务器上的邮件,包括附件信息
JAVA_Mail_邮件_发送_接收_抄送_密送_附件 该资源是一个Java项目,可用Eclipse导入即可运行。 共4个类: 1:ReceiveMail.java -接收普通邮件 2:ReciveMailWithAttachMent.java --接收含有附件的邮件 3:SendMail....
(发送文本不会发送附件,附送Html邮件才会发送附件,接收邮件可以拿到所有未读邮件,已读不会下载,下载时会把附件下载到MailTool中的localPath文件夹下,请确保路径存在) 本人测试输出结果如下: /****************...
在wince上有C#实现邮件接收,包括接收附件,以及内容解码,适合下载,
vb接收email的程序(pop3协议),支持附件.zip
* 可以发送带附件的邮件,附件大小限制由发送方服务器而定,暂未测试具体为多少MB * 附件可以是多个 * 邮件内容和主题可以是空,但当有附件时,主题取第一个附件的文件名(不含扩展名) * 密码验证均为base64加密 * ...
│ ├── 发送带附件的邮件 │ │ ├── dailylog.txt │ │ └── sendemailattach.py │ └── 发送普通邮件 │ ├── dailylog.txt │ └── sendemail.py └── 接收邮件 ├── 接收任意标题...
delphi2010版本IMAP协议下载邮件,能自动获取大附件下载地址,自动保存。
邮件自动接收,根据把邮件写入sql数据库,并根据邮件的内容查询数据库,给回复邮件
获取邮件的内容获得邮件附件的工具类,使用简单测试可用。