https://github.com/camunda/ca...html
在业务过程系统中集成邮件服务.java
发送邮件git
收取邮件github
删除邮件apache
收到邮件时, 执行操做api
要求tomcat
Camunda BPM >= 7.50服务器
Java 8oracle
添加 camunda-bpm-mail-core
做为应用程序依赖. 若是使用Maven, 须要添加以下依赖到 pom.xml
文件中:app
<dependency> <groupId>org.camunda.bpm.extension</groupId> <artifactId>camunda-bpm-mail-core</artifactId> <version>1.1.0</version> </dependency>
添加 camunda-bpm-mail-core-1.1.0.jar
到服务器的 lib
目录中, 好比 apache-tomcat-8.0.24\lib
. 还要保证包括下面的依赖:
camunda-connect-core >= 1.0.3
JavaMail >= 1.5.5
slf4j-api >= 1.7.21
若是使用 Wildfly, 参考这个特殊说明
该扩展构建与 Connectors API 基础上, 而且提供了一些用于链接到邮件服务器的链接器. 链接能够做为一个服务任务实现用于一个过程中, 而且经过ID进行引用. 而后使用 Camunda Modeler 来配置:
<serviceTask id="sendMail" name="Send Mail Task"> <extensionElements> <camunda:connector> <camunda:connectorId>mail-send</camunda:connectorId> <!-- input / output mapping --> </camunda:connector> </extensionElements> </serviceTask>
查看 链接器用户指南 以了解如何配置过程引擎来使用链接器
链接器ID: mail-send
输入参数 | 类型 | 是否要求 |
---|---|---|
from | String | NO(从配置读取) |
fromAlias | String | NO(从配置读取) |
to | String | Yes |
cc | String | NO |
bcc | String | No |
subject | String | Yes |
text | String | No |
html | String | No |
fileNames | 字符串列表 (文件路径) | Yes |
邮件内容能够使HTML或者纯文本, 而且能够经过模板生成(好比, 使用 FreeMarkeer 模板, 能够参考 这个例子)
输入参数 | 类型 | 是否要求 |
---|---|---|
folder | String(好比: 'Inbox' | NO(从配置读取) |
download-attachements | Boolean | NO(从配置读取) |
输出参数 | 类型 |
---|---|
mails | Mail 类型列表 |
若是 download-attachements
为 true
, 那么存储附件到配置中指定的位置. 存储附件的路径能够经过 Mail 的 Attachment 中获取
输入参数 | 类型 | 是否要求 |
---|---|---|
folder | String(例如: 'Inbox') | NO(从配置读取) |
mails | Mail 列表 | NO |
messageIds | 字符串列表 | NO |
messageNumbers | 整数列表 | NO |
mails
, messageIds
或 messageNumbers
必须设置.
该扩展使用 MailNotificationService 来对收取的邮件作响应操做(例如, 启动一个过程示例, 或关联一个消息) 你能够注册处理器/消费者, 当收到一个新的邮件时, 来处理这个邮件. 下面给出一个Java的实际代码例子:
MailNotificationService notificationService = new MailNotificationService(configuration); notificationService.registerMailHandler(mail -> { runtimeService.startProcessInstanceByKey("process", Variables.createVariables().putValue("mail", mail)); }); notificationService.start(); // ... notificationService.stop();
若是使用了一个邮件处理器, 而且在配置中启用了 downloadAttachments
, 那么在调用对应的处理器的时候首先存储附件. 另外, 还能够经过调用 Mail.downloadAttachments() 触发手动下载.
默认状况, 扩展会从CLASSPATH中查找一个名为mail-config.properties
的配置文件. 你能够使用环境变量 MAIL_CONFIG
来修改查找路径. 若是你想在CLASSPATH中查找一个文件, 使用classpath
前缀. (例如: classpath:/my-application.config
)
下面是一个配置示例:
# send mails via SMTP mail.transport.protocol=smtp mail.smtp.host=smtp.gmail.com mail.smtp.port=465 mail.smtp.auth=true mail.smtp.ssl.enable=true mail.smtp.socketFactory.port=465 mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory # poll mails via IMAPS mail.store.protocol=imaps mail.imaps.host=imap.gmail.com mail.imaps.port=993 mail.imaps.timeout=10000 # additional config mail.poll.folder=INBOX mail.sender=USER@google.com mail.sender.alias=User Inc mail.attachment.download=true mail.attachment.path=attachments # credentials mail.user=USER@gmail.com mail.password=PASSWORD
能够在 extension/core/configs 找到一些配置示例. 若是使用没有配置的邮件供应商, 你也能够添加本身的. 能够经过 集成测试 来校验你的配置.
下面的例子展现了如何使用链接器和服务.
注意 javamail 的版本, 最好用比较新的