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 的版本, 最好用比較新的