Jakarta mail 使用Java从office365 Outlook帐户读取电子邮件

Jakarta mail 使用Java从office365 Outlook帐户读取电子邮件,jakarta-mail,office365,Jakarta Mail,Office365,我们需要读取来自Office365帐户的电子邮件,并在Java EE应用程序中显示它们。我们已经使用JavaMail完成了它,并且它的工作与预期一样;但问题在于性能。根据邮件或附件的大小,阅读电子邮件大约需要30秒到3分钟。我们有什么办法可以提高这个性能吗?以下是我们采取的方法的更多细节 我们正在使用IMAPStore检索邮件 我们需要阅读的电子邮件不在收件箱内。它位于它外部的另一个文件夹中。此文件夹也有子文件夹,其中包含根据主题过滤的电子邮件 在读取邮件时,我们从特定文件夹中读取邮件,然后在应

我们需要读取来自Office365帐户的电子邮件,并在Java EE应用程序中显示它们。我们已经使用JavaMail完成了它,并且它的工作与预期一样;但问题在于性能。根据邮件或附件的大小,阅读电子邮件大约需要30秒到3分钟。我们有什么办法可以提高这个性能吗?以下是我们采取的方法的更多细节

  • 我们正在使用IMAPStore检索邮件
  • 我们需要阅读的电子邮件不在收件箱内。它位于它外部的另一个文件夹中。此文件夹也有子文件夹,其中包含根据主题过滤的电子邮件
  • 在读取邮件时,我们从特定文件夹中读取邮件,然后在应用程序中以与邮件服务器中相同的层次结构显示它们
  • 我们想到了不同的替代方法,比如从PST文件中读取,或者通过后台进程将电子邮件存储到我们的数据库中,然后再从数据库中读取,但没有一种方法真正奏效。 有没有其他方法可以做到这一点。我们发现有一个适用于android的Office365 SDK,我们可以利用它吗?

    首先

    你还没有提供任何关于你正在做什么的细节,这需要30秒到3分钟。它正在读一条信息吗?它在读1000条信息吗

    你所说的“阅读”信息到底是什么意思?只是显示标题信息,还是同时显示所有消息内容

    时间是否包括连接到服务器和打开文件夹的时间?或者只是在打开文件夹后访问邮件的时间

    你看过报纸了吗?如果您使用java.util.logging来获取时间戳日志输出,您可能能够知道哪个操作需要时间

    您是否使用该方法批量预取邮件数据

    为什么你认为慢的不仅仅是Office365


    有了更多的细节,我们也许可以提供更多的提示,帮助您提高程序的性能。

    我提到的时间包括了所有时间。我们使用分页显示邮件,目前每页显示25封邮件。以下是我们正在执行的步骤。1.首先,我们登录邮件服务器并获取电子邮件总数。2.使用此计数,我们决定页数。3.然后,我们只读取前25封电子邮件的标题信息,同时检索附件的名称(如果有)。在所有这些时间里,我们显示一个“正在加载”的代码。一旦收到邮件服务器的响应,我们就加载屏幕,这需要时间。之后,当用户单击后续页面时,我们再次连接到服务器并获取接下来的25封邮件。关于JavaMail调试输出,我们将对此进行检查。是的,我们正在使用Folder.fetch。如果您愿意,我可以与您共享代码供您参考。您需要隔离程序中占用时间最多的部分。如果您认为是JavaMail部分,请将其隔离到一个程序中,该程序从服务器获取数据,但不做任何处理。如果仍然太慢,最有可能的问题是邮件服务器太慢,但是通过查看调试输出,我们可以确定您的工作是否效率低下,并可以改进与服务器的交互方式。您可以使用作为起点或Office365的性能测试。在对不同的操作进行计时后,我们发现登录邮件服务器需要10-15秒,然后读取邮件头信息和附件名称需要1秒。因此,仅显示25封电子邮件的标题需要超过35秒。我想你说的Office365速度慢是对的。是否有任何方法可以减少仅登录所需的时间。通常,在服务器验证您的身份验证信息时,大部分登录时间都在服务器上,因此您对此无能为力。您当然可以深入了解连接和登录的性能,但您可能会有所改进,但这不太可能。对于标题等,使用Folder.fetch方法通常会有很大帮助。发布调试输出或通过javamail发送给我_ww@oracle.com我们可以看看是否有进一步优化的可能。嘿,伙计们,问题解决了吗?你能帮我吗(stackoverflow.com/q/36483341/3703397)?