검색

6.3. Camel-mail

download PDF

이메일과의 상호 작용은 메일 구성 요소에서 제공합니다.

기본적으로 Camel은 자체 메일 세션을 만들고 이를 사용하여 메일 서버와 상호 작용합니다. JBoss EAP는 이미 보안 연결, 사용자 이름 및 암호 암호화 등에 대한 모든 관련 지원을 제공하는 메일 하위 시스템을 제공하므로 JBoss EAP 구성 내에서 메일 세션을 구성하고 JNDI를 사용하여 Camel 엔드포인트로 전달하는 것이 좋습니다.

6.3.1. JBoss EAP 구성

먼저 메일 서버에 대한 JBoss EAP 메일 하위 시스템을 구성합니다. 다음 예제에서는 Google Mail Cryostat 및 SMTP에 대한 구성을 추가합니다.

추가 mail-session은 'default' 세션 후에 구성됩니다.

<subsystem xmlns="urn:jboss:domain:mail:2.0">
    <mail-session name="default" jndi-name="java:jboss/mail/Default">
      <smtp-server outbound-socket-binding-ref="mail-smtp"/>
    </mail-session>
    <mail-session debug="true" name="gmail" jndi-name="java:jboss/mail/gmail">
      <smtp-server outbound-socket-binding-ref="mail-gmail-smtp" ssl="true" username="your-username-here" password="your-password-here"/>
      <imap-server outbound-socket-binding-ref="mail-gmail-imap" ssl="true" username="your-username-here" password="your-password-here"/>
    </mail-session>
</subsystem>

'mail-gmail-smtp' 및 'mail-gmail-imap'의 outbound-socket-binding-ref 값을 구성할 수 있습니다.

다음 단계는 이러한 소켓 바인딩을 구성하는 것입니다. socket-binding-group 구성에 다음과 같이 바인딩을 추가할 수 있습니다.

<outbound-socket-binding name="mail-gmail-smtp">
  <remote-destination host="smtp.gmail.com" port="465"/>
</outbound-socket-binding>

<outbound-socket-binding name="mail-gmail-imap">
  <remote-destination host="imap.gmail.com" port="993"/>
</outbound-socket-binding>

이렇게 하면 포트 465 및 포트 993의 imap.gmail.com의 호스트 smtp.gmail.com에 연결하도록 메일 세션이 구성됩니다. 다른 메일 호스트를 사용하는 경우 이 세부 정보가 달라집니다.

6.3.2. POP3 설정

POP3 세션을 구성해야 하는 경우 원칙이 위의 예제에 정의된 것과 동일합니다.

<!-- Server configuration -->
<pop3-server outbound-socket-binding-ref="mail-pop3" ssl="true" username="your-username-here" password="your-password-here"/>

<!-- Socket binding configuration -->
<outbound-socket-binding name="mail-gmail-imap">
  <remote-destination host="pop3.gmail.com" port="993"/>
</outbound-socket-binding>

6.3.3. Camel 경로 구성

6.3.3.1. 메일 프로듀서

이 예에서는 camel-cdi 구성 요소와 함께 CDI와 함께 SMTPS 프로토콜을 사용합니다. JBoss EAP 구성 내에서 구성한 Java 메일 세션은 JNDI를 통해 Camel RouteBuilder에 삽입됩니다.

6.3.3.1.1. 라우팅 빌더 SMTPS 예

GECDHE 메일 세션은 이전에 구성한 jndi-name 속성에 대한 참조와 함께 @Resource 주석을 사용하여 Producer 클래스에 삽입됩니다. 이를 통해 camel-mail 엔드포인트 구성에서 메일 세션을 참조할 수 있습니다.

public class MailSessionProducer {
    @Resource(lookup = "java:jboss/mail/greenmail")
    private Session mailSession;

    @Produces
    @Named
    public Session getMailSession() {
        return mailSession;
    }
}
public class MailRouteBuilder extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("direct:start")
        .to("smtps://smtp.gmail.com?session=#mailSession");
    }
}

이메일을 보내려면 ProducerTemplate을 생성하고 필요한 이메일 헤더와 함께 적절한 본문을 보낼 수 있습니다.

Map<String, Object> headers = new HashMap<String, Object>();
headers.put("To", "destination@test.com");
headers.put("From", "sender@example.com");
headers.put("Subject", "Camel on Wildfly rocks");

String body = "Hi,\n\nCamel on Wildfly rocks!.";

ProducerTemplate template = camelContext.createProducerTemplate();
template.sendBodyAndHeaders("direct:start", body, headers);

6.3.3.2. 메일 소비자

이메일을 수신하려면 Cryostat mailEndpoint를 사용할 수 있습니다. Camel 경로 구성은 다음과 같습니다.

public void configure() throws Exception {
   from("imaps://imap.gmail.com?session=#mailSession")
   .to("log:email");
}

6.3.4. 보안

6.3.4.1. SSL 구성

SSL/TLS를 사용하여 Java 메일 세션 및 관련 전송을 관리하도록 JBoss EAP를 구성할 수 있습니다. 메일 세션을 구성할 때 서버 유형에 대해 SSL 또는 TLS를 구성할 수 있습니다.

  • smtp-server
  • imap-server
  • pop-server

ssl="true" 또는 tls="true" 속성을 설정합니다.

6.3.4.2. 암호 보안

구성 파일 내의 암호에는 일반 텍스트를 사용하지 않는 것이 좋습니다. WildFly Vault 를 사용하여 중요한 데이터를 마스킹할 수 있습니다.

6.3.4.3. Camel 보안

Camel 끝점 보안 문서는 메일 구성 요소 가이드에서 확인할 수 있습니다. Camel에는 보안 요약 페이지도 있습니다.

6.3.5. GitHub의 코드 예제

예제 camel-mail 애플리케이션은 GitHub에서 이메일 전송을 시도하거나 이메일을 수신해 볼 수 있습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.