Как читать вложения из почты? - PullRequest
3 голосов
/ 11 июня 2019

Я использую JavaMail для чтения сообщений электронной почты.Если я получаю обычные сообщения с вложенными файлами, это все файлы, которые я могу прочитать, но если я получаю перенаправленное сообщение, я не могу получить вложение.Это мой код:

class Msg(src: IMAPMessage) {
    lazy val multipart: MimeMultipart = src.getContent.asInstanceOf[MimeMultipart]
    def parts = (0 until multipart.getCount)
      .map(multipart.getBodyPart)

    def files = {
      parts
          .filter(s => {
            println(s + " " + s.getFileName + " " + s.getContent + " " + s.getLineCount)
            true})
        .filter(_.getFileName != null)
        .map(part => part.getFileName -> part.getContent.toString)
    }
  }

object MailMain {
  def main(args: Array[String]): Unit = {
    new ImapMail("host_name", "user_name", "password", ssl)
      .messages(true)
      .foreach(m => println(m.files))
  }

И когда я пытаюсь получить контент через part.getContent.toString, я получаю это com.sun.mail.util.BASE64DecoderStream@67d48005.В чем моя проблема?

1 Ответ

0 голосов
/ 11 июня 2019

Очевидно, что контент - это поток, если вы хотите увидеть его.

// Assume a obj is an instance of com.sun.mail.util.BASE64DecoderStream.
if (obj.isInstanceOf[InputStream]) {
      val is: InputStream = obj.asInstanceOf[InputStream]
      var ch: Int = -1
      while ((ch = is.read()) != -1) System.out.write(ch)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...