在网络服务端(Java)上创建电子邮件(外观格式),然后发送到前端并下载

时间:2018-12-04 14:52:31

标签: java angular

我想编写一项服务,通过该服务我可以创建指定了(收件人,抄送,密件抄送,主题,正文)的电子邮件。然后,我需要将此电子邮件返回到前端,并以“ .oft”格式下载,当我单击此下载文件时,该方式应为:文件应打开,并填充所有字段(收件人,抄送,密件抄送,主题,正文)。

我正在使用Java作为后端技术,并使用angular5作为前端。

我尝试使用javax.mail实用工具创建电子邮件并将其作为字节数组返回。像这样:

Properties prop = System.getProperties();
Session session = Session.getDefaultInstance(prop, null);
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("emailAddr@domain.com"));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress("emailAddr@domain.com"));
msg.setSentDate(new Date());
msg.setSubject("subject");
msg.setText("text of msg"); 


//return it from service API as
response.getOutputStream().write(msg.toString().getBytes());

在前端(component.ts文件)中,我将响应检索为:

//function gets called on button click
createEmailTemplate():void{
    this.httpService.getEmail('serviceUrl')
    .subscribe(
      email => {
         let filename = "SampleMailFile.oft";
         let linkElement = document.createElement('a');
         let blob = new Blob([email], { type: "message/rfc822"});
         let url = window.URL.createObjectURL(blob);
         linkElement.setAttribute('href', url);
         linkElement.setAttribute("download", filename);
         let clickEvent = new MouseEvent("click", {
                "view": window,
                 "bubbles": true,
                 "cancelable": false
          });
         linkElement.dispatchEvent(clickEvent);
      }
    );
}

1 个答案:

答案 0 :(得分:0)

MSG文件应该与OFT文件具有相同的格式。如果是这样,那么您应该可以使用jotlmsg来生成文件。您完全不需要使用JavaMail,因为它实际上是用来发送邮件的。

注意::我之前从未使用过此库,因此无法说出它是否真正可行。