6.3. camel-mail
与电子邮件的交互由 邮件 组件提供。
默认情况下,Camel 将创建自己的邮件会话,并使用它来与您的邮件服务器进行交互。由于 JBoss EAP 已经为安全连接、用户名和密码加密提供所有相关支持,因此建议在 JBoss EAP 配置中配置您的邮件会话,并使用 JNDI 将它们连接到您的 Camel 端点。
6.3.1. JBoss EAP 配置 复制链接链接已复制到粘贴板!
首先,您为 Mail 服务器配置 JBoss EAP 邮件子系统。以下示例添加了 Google 邮件 IMAP 和 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>
<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 和 192.168.0.3 上的端口 465.gmail.com 上的 host smtp.gmail.com。如果您使用不同的邮件主机,则此详细信息会有所不同。
6.3.2. POP3 配置 复制链接链接已复制到粘贴板!
如果您需要配置 POP3 会话,则与以上示例中定义的原则相同。
6.3.3. Camel 路由配置 复制链接链接已复制到粘贴板!
6.3.3.1. mail producer 复制链接链接已复制到粘贴板!
这个示例使用 SMTPS 协议和 CDI 与 camel-cdi 组件一起。您在 JBoss EAP 配置中配置的 Java 邮件会话通过 JNDI 注入到 Camel RouteBuilder 中。
6.3.3.1.1. 路由构建器 SMTP 示例 复制链接链接已复制到粘贴板!
GMail 邮件会话使用 @Resource
注释注入 Producer 类,并引用您之前配置的 jndi-name
属性。这可让您在 camel-mail 端点配置中引用邮件会话。
要发送电子邮件,您可以创建一个 ProducerTemplate,并将适当的正文与必要的电子邮件标头一起发送。
6.3.3.2. 邮件消费者 复制链接链接已复制到粘贴板!
要接收电子邮件,您可以使用 IMAP 邮件端点。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 可以配置为管理 Java 邮件会话,以及使用 SSL / TLS 管理它们的相关传输。在配置邮件会话时,您可以在服务器类型上配置 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 应用程序示例,供您尝试发送/接收电子邮件。