在Scala中发送带有多个附件的电子邮件

时间:2018-12-27 14:00:21

标签: scala email javamail mail-sender

我已经使用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 :(得分:0)

我不知道该邮件API,但是您应该能够像在Java中一样使用Scala在Java中使用Java API。如果您在Java中看到类似的内容:

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

您通常希望在Scala中将其翻译为类似的内容:

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

只需以这种方式翻译您发布到Scala的Java代码,它就可以像在Java中一样工作(或不工作)。