`
gzycnet
  • 浏览: 32350 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论

接收带附件的邮件

阅读更多
    在带有附件的邮件中,消息的内容是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()) ;
 }
} 
分享到:
评论

相关推荐

    spring boot定时任务接收邮件并且存储附件的方法讲解

    关于 Spring Boot 定时任务接收邮件并且存储附件的方法讲解 Spring Boot 是一个基于 Java 的框架,它提供了许多实用的功能,包括定时任务。在 Spring Boot 中实现定时任务非常简单,只需要使用两个注解:`@...

    Qt pop3接收邮件并下载附件程序

    在本文中,我们将深入探讨如何使用Qt库中的POP3功能来实现自动登录邮箱、接收邮件以及下载附件。Qt是一个跨平台的应用程序开发框架,广泛应用于C++编程,它提供了丰富的功能,包括网络通信模块,使得我们可以方便地...

    vb 发带附件邮件

    在VB(Visual Basic)编程环境中,发送带有附件的电子邮件是一个常见的需求。VB6(Visual Basic 6.0)是这个任务的经典实现环境。本篇将详细介绍如何使用VB6编写程序来实现无控件发送带附件的邮件。 首先,我们需要...

    pop3接收邮件并可以收附件

    在"pop3接收邮件并可以收附件"这个主题中,我们关注的是如何使用POP3协议接收包含附件的邮件。邮件附件可能包括各种文件类型,如文档、图片、音频或视频文件等。在编程实现这一功能时,我们需要使用支持POP3的库或...

    使用Jmail组件发送和接收邮件(含附件)

    在IT行业中,电子邮件是...总的来说,JMail组件提供了强大且灵活的邮件处理能力,无论是发送带有附件的邮件,还是从邮箱中下载附件,都可以轻松实现。理解并掌握上述步骤,你就能在Java项目中自如地处理邮件通信了。

    用Delphi2010 实现邮件附件收发功能

    用Delphi2010 实现邮件附件收发功能 TIdPOP3组件简介 TIdPOP3 是用来接收邮件服务器的邮件信息到用户端的一个组件。它实现了RFC 1939协议。 在使用TIdPOP3组件时需设置它的几个成员属性。 Host :指定邮件服务器,...

    可以接收邮件服务器上的邮件,包括附件信息

    对于接收带有附件的邮件,IMAP协议更为常用,因为它允许用户在线查看邮件,而不必下载整个邮件到本地。 1. **IMAP协议**:IMAP允许用户在服务器上管理邮件,如阅读、移动、删除等,而无需下载所有邮件。这对于处理...

    邮件附件自动接收

    在IT行业中,自动接收邮件附件是一项常见的需求,特别是在自动化办公和数据处理的场景下。这个“邮件附件自动接收”的程序可能是一个解决方案,它能够帮助用户高效地管理来自电子邮件的附件,将其保存到指定的本地...

    .net带附件的邮件发送

    在.NET框架下,实现带有附件的邮件发送是一项常见的需求,特别是在企业级应用中,这种功能对于报告、通知或数据共享尤为重要。以下是从给定代码片段中提取的关键知识点,以及对邮件发送过程的深入解析。 ### 关键...

    Javax实现邮件接收和发送,支持附件

    (发送文本不会发送附件,附送Html邮件才会发送附件,接收邮件可以拿到所有未读邮件,已读不会下载,下载时会把附件下载到MailTool中的localPath文件夹下,请确保路径存在) 本人测试输出结果如下: /****************...

    C++带附件邮件发送

    总结来说,"C++带附件邮件发送"这一主题涵盖了网络编程、SMTP协议、邮件格式化和可能的第三方库使用等多个IT知识领域。通过学习和实践这个项目,开发者不仅可以提升C++编程技能,还能深入理解电子邮件系统的运作机制...

    vb接收电子邮件email的程序(pop3协议),支持附件.zip

    在"vb接收电子邮件email的程序(pop3协议),支持附件.zip"这个项目中,开发者已经创建了一个VB应用程序,能够通过POP3协议获取并处理电子邮件,包括下载带有附件的邮件。以下是该程序可能涉及的关键知识点: 1. **...

    asp.net带附件邮件发送程序

    在ASP.NET中发送带有附件的邮件,通常会用到System.Net.Mail命名空间中的SmtpClient和MailMessage类。`SmtpClient`类负责与SMTP(Simple Mail Transfer Protocol)服务器通信,而`MailMessage`类则用于构造邮件内容...

    java 收发 带附件 邮件

    在Java编程中,发送和接收带有附件的电子邮件是一项常见的任务,尤其在自动化处理、数据传输或者系统集成等场景中。本文将深入探讨如何利用Java Mail API实现这一功能,并结合提供的`mail-1.4.4.jar`库进行讲解。 ...

    java 邮件发送 可带附件

    在Java中,我们可以使用JavaMail API来实现邮件的发送,包括带有附件的功能。以下是对这个主题的详细解释: 一、JavaMail API简介 JavaMail API是一个开源的Java库,用于处理邮件服务。它提供了丰富的接口和类,...

    java Exchange收发邮件加附件

    以下是一个简单的发送邮件带附件的Java代码示例: ```java ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1); ExchangeCredentials credentials = new WebCredentials(...

    VB邮件管理客户端:包括接收、发送Email附件等.rar

    使用此软件可对邮件进行适时管理,新建帐户后,可读取指定邮件账户中的邮件,另外还可接收邮件附件,功能类似于Windows中自带的邮件管理程序,通过这个客户端,你将会熟悉了解VB操作邮件的的各种技巧,绝对不容错过...

    发送带附件的邮件

    在IT行业中,发送带附件的邮件是一项常见的任务,特别是在自动化工作流程、客户服务或者内部通信中。这个场景通常涉及到编程,特别是使用Java语言进行邮件开发。本文将深入探讨如何使用Java来实现这一功能。 首先,...

    C# 使用 MailKit 接收邮件

    C# 使用 MailKit 接收邮件 MailKit 是一个开源的 C# ...附件处理提供灵活的附件处理功能,支持添加、读取和保存邮件附件。SSL/TLS 支持支持安全套接字层(SSL)和传输层安全性(TLS),确保邮件的安全传输。容错处理。

Global site tag (gtag.js) - Google Analytics