6.3. camel-mail
与电子邮件交互由 邮件 组件提供。
默认情况下,Camel 将创建自己的邮件会话,并使用它来与您的邮件服务器交互。由于 JBoss EAP 已经提供了一个 mail 子系统,其中包含对安全连接、用户名和密码加密等所有相关支持,因此建议在 JBoss EAP 配置中配置您的邮件会话,并使用 JNDI 将它们连接到您的 Camel 端点。
6.3.1. JBoss EAP 配置 复制链接链接已复制到粘贴板!
首先,您要为邮件服务器配置 JBoss EAP 邮件子系统。以下示例添加了 Google Mail IMAP 和 SMTP 的配置。
在 'default' 会话后配置额外的 mail-session。
<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>
<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-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
配置添加额外的绑定:
这会将邮件会话配置为连接到端口 465 上的 smtp.gmail.com 和端口 993 上的 imap.gmail.com。如果您使用其他邮件主机,则此详细信息将有所不同。
6.3.2. POP3 配置 复制链接链接已复制到粘贴板!
如果您需要配置 POP3 会话,原则与上例中定义的原则相同。
6.3.3. Camel 路由配置 复制链接链接已复制到粘贴板!
6.3.3.1. 邮件制作者 复制链接链接已复制到粘贴板!
这个示例使用 SMTPS 协议,以及 CDI 与 camel-cdi 组件。您在 JBoss EAP 配置中配置的 Java 邮件会话通过 JNDI 注入到 Camel RouteBuilder 中。
6.3.3.1.1. 路由构建器 SMTPS 示例 复制链接链接已复制到粘贴板!
GMail 邮件会话使用 @Resource
注释注入 Producer 类,并引用您之前配置的 jndi-name
属性。这可让您引用 camel-mail 端点配置上的邮件会话。
要发送电子邮件,您可以创建一个 ProducerTemplate,并将适当的正文与所需的电子邮件标头一起发送。
6.3.3.2. 邮件消费者 复制链接链接已复制到粘贴板!
要接收电子邮件,您可以使用 IMAP MailEndpoint。Camel 路由配置类似如下:
public void configure() throws Exception { from("imaps://imap.gmail.com?session=#mailSession") .to("log:email"); }
public void configure() throws Exception {
from("imaps://imap.gmail.com?session=#mailSession")
.to("log:email");
}
6.3.4. 安全性 复制链接链接已复制到粘贴板!
6.3.4.1. SSL 配置 复制链接链接已复制到粘贴板!
JBoss EAP 可以配置为使用 SSL / TLS 管理 Java 邮件会话及其关联的传输。在配置邮件会话时,您可以在服务器类型上配置 SSL 或 TLS:
- smtp-server
- imap-server
- pop-server
通过设置属性 ssl="true"
或 tls="true"
。
6.3.4.2. 保护密码 复制链接链接已复制到粘贴板!
建议不要在配置文件中使用明文密码。您可以使用 WildFly Vault 屏蔽敏感数据。
6.3.4.3. Camel 安全 复制链接链接已复制到粘贴板!
6.3.5. GitHub 上的代码示例 复制链接链接已复制到粘贴板!
GitHub 上提供了一个 camel-mail 应用程序示例,供您尝试发送 / 接收电子邮件。