2011-02-02 2 views
6

glassfish에 배포 된 Java EE 6 응용 프로그램을 개발 중입니다. 전자 메일을 보내는 방법에 대한 자습서를 계속 읽지 만 오래되거나 너무 복잡해 보입니다. 나는 많은 것들이 훨씬 더 단순 해졌기 때문에 메일을 보내는 아주 간단한 방법이 있음을이 스펙에 포함되기를 희망했다. 올바른 방향으로 나를 가리킬 수 있습니까 아니면 몇 가지 샘플 코드를 보여줄 수 있습니까?Java EE 6에서 전자 메일 보내기

답변

11

apache commons email을 활용하거나, 스프링을 사용하는 경우 spring mail을 사용할 수 있습니다. 랩퍼 라이브러리를 사용하지 않으려면 항상 JavaMail이고 code sample을 사용하십시오.

이러한 링크에는 모두 코드 예제가 있습니다.

+0

glassfish에는 smtp 서버 또는 메일을 보내는 서비스가 포함되어 있습니까? 아니면 별도로 설정해야합니까? – arg20

+0

학교 또는 직장에서 smtp 서버를 사용해야합니다. 나는 벙어리를 사용한 적이 없지만 사용하기에 좋은 소리를 낸다. 그 링크를 제공 한 James에 대한 명성. – CoolBeans

0

JEE 앱 서버는 이메일 리소스를 제공해야합니다. 당신이해야 할 일은 리소스를 조회하는 것이다 (나는 그것이 설정되어 있다고 가정한다). 그리고 이메일을 보낸다.

//Mail Resource injection not working on wildfly 10 
//@Resource(lookup = "java:/futuramail") 
private Session mailSession; 

@Asynchronous 
@Lock(LockType.READ) 
    public void sendMail(String recipient, String subject, String text) { 
     try { 

      InitialContext ic = new InitialContext(); 
      mailSession = (Session) ic.lookup("java:/futuramail"); 
      MimeMessage message = new MimeMessage(mailSession); 
      Address[] to = new InternetAddress[]{new InternetAddress(recipient)}; 
      message.setRecipients(Message.RecipientType.TO, to); 
      message.setSubject(subject); 
      message.setSentDate(new Date()); 
      message.setContent(text, "text/html"); 
      //message.setText(text); 
      Transport.send(message); 
      System.out.println("mail sent"); 
     } catch (MessagingException me) { 
      me.printStackTrace(); 
     } catch (NamingException ex) { 
      Logger.getLogger(MailProcessor.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
+0

Wildfly 10.1.0.final에서 Mail resource Injection은 조회 또는 이름 속성을 사용하여 완벽하게 작동합니다 –