отправить письмо с несколькими вложениями в Scala - PullRequest
0 голосов
/ 27 декабря 2018

Я использовал java mail API для отправки электронных писем в нашей группе.Мне известны объекты DataHandler, которые, в свою очередь, используют FileDataSource для захвата файлов и прикрепления их как составного файла.Однако я не могу использовать его в Scala.Кто-нибудь может мне помочь в этом?

Вот мой код:

def createMessage: Message = {
val properties = new Properties()
properties.put("mail.smtp.host", smtpHost)
properties.put("mail.smtp.port",smtpPort)
val session = Session.getDefaultInstance(properties, null)
return new MimeMessage(session)

}

var message: Message = null

  message = createMessage
  message.setFrom(new InternetAddress(from))
  message.setSentDate(new Date())
  message.setSubject(subject)
  message.setText(content)
  message.addRecipient(Message.RecipientType.TO, new InternetAddress(to))

  def sendMessage {
    Transport.send(message)
  }

Я могу использовать message.sefileName, чтобы установить имя файла вложения,но как я могу прикрепить фактические файлы.Например, в Java мы можем добиться похожих результатов, таких как:

MimeBodyPart messageBodyPart1 = new MimeBodyPart();
messageBodyPart1.setText(messageText);
MimeBodyPart messageBodyPart2 = new MimeBodyPart();
FileDataSource fdatasource = new FileDataSource(file);
messageBodyPart2.setDataHandler(new DataHandler(fdatasource));
messageBodyPart2.setFileName(fdatasource.getName)
Multipart mpart = new MimeMultipart();
mpart.addBodyPart(messageBodyPart1);
mpart.addBodyPart(messageBodyPart2);
message.setContent(mpart);

1 Ответ

0 голосов
/ 28 декабря 2018

Я не знаю этот почтовый API, но вы должны иметь возможность использовать Java API в Scala так же, как вы бы использовали его в Java.Если вы видите что-то подобное в Java:

MimeBodyPart messageBodyPart1 = new MimeBodyPart();
messageBodyPart1.setText(messageText);

Обычно вы хотите перевести это в Scala примерно так:

val messageBodyPart1: MimeBodyPart = new MimeBodyPart()
messageBodyPart1.setText(messageText)

Просто переведите Java-код, который вы разместили в Scala.таким образом, и он должен работать так же (или не очень), как он работал в Java.

...