代码之家  ›  专栏  ›  技术社区  ›  user3876291

在web服务端(Java)创建电子邮件(outlook格式)并发送到前端并下载

  •  -1
  • user3876291  · 技术社区  · 6 年前

    我想写一个服务,通过它我可以创建一个指定的(收件人,抄送,密件抄送,主题,正文)的电子邮件。然后,我需要将此电子邮件返回到前端并以“.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());
    

    //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 回复  |  直到 6 年前
        1
  •  0
  •   Jason Armstrong    6 年前

    MSG文件应该与OFT文件具有相同的格式。如果这是真的,那么你应该能够使用 jotlmsg 生成文件。您根本不需要为此使用JavaMail,因为它的目的是实际发送邮件。

    注: 我以前没有用过这个图书馆,所以我不能说这是否真的有用。