| username | the username used for authentication | \- | No |
| password | the password used for authentication. Can be null or empty | \- | No |
| host | the host used for connection | \- | Yes |
| port | the port used for connection | 25 | No |
| to | email address of the recipient | \- | Yes |
| from | email address of the sender | \- | Yes |
| reply | email address for the reply | \- | No |
| subject | the subject of the mail | petals-bc-mail | No |
| send-mode | Send either the source, the attachments or both of the payload | content-and-attachments | No |
{table-plus}
{include:0 CDK SU Interceptor configuration}
h4. Service Unit content
The Service Unit has to contain the following elements, packaged in an archive :
* The META-INF/jbi.xml descriptor file, has described above,
* An optional wsdl file describing the related service
{noformat}
su-mail.zip
+ META-INF
- jbi.xml
- service.xml
{noformat}
h1. Invoking service on incoming email
{center}
!schema_math_car_4.png|border=0,width=501,height=259!
*Receiving mails*
{center}
Petals Mail binding component (MailBC) allows to receive mails from external consumer and to bind them to message exchanges intinded to internal jbi components. To receive new mails, MailBC can be linked to specific mail stores. It will check these stores periodicaly to retrieve new mails. If it finds a new mail in a store, it will process it (map this mail to a message exchange) and send it to the targeted jbi endpoint. Then the mail is removed from the store. So, all mails (read or unread) in a store are considered as new mail.
* Step 1: An External Consumer Entity (Business Service or simple mail client) sends an email to the registered Mail Store (a classical email account).
* Step 2: Mail Binding Component periodicaly checks for new mails and imports them.
* Step 3and 4 : Mail Binding Component processes this new mails : transforms them into Message Exchanges, sends them to targeted jbi components (step 4) and finally delete them from the mail Store.
h3. Service Unit descriptor
Petals Mail binding component can be configured by deploying a new service unit to it. The jbi descriptor (jbi.xml file) of this service unit must contains a consumes node describing the link between an external mail store and an internal jbi endpoint. Here is an exemple of jbi descriptor activating a new "consumed service" :
{center}
{code:lang=xml}
<?xml version="1.0" encoding="UTF-8"?>
<!-- JBI descriptor for PEtALS' "petals-bc-mail" (Mail), version 3.0 -->
<jbi:jbi version="1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jbi="http://java.sun.com/xml/ns/jbi"
xmlns:mail="http://petals.ow2.org/components/mail/version-3.0"
xmlns:petalsCDK="http://petals.ow2.org/components/extensions/version-4.0"
xmlns:generatedNs="http://test">
<!-- Import a Service into PEtALS or Expose a PEtALS Service => use a BC. -->
<jbi:services binding-component="true">
<!-- Expose a PEtALS Service => consumes a Service. -->
<jbi:consumes
interface-name="generatedNs:Interface"
service-name="generatedNs:Service"
endpoint-name="Endpoint">
<!-- CDK specific elements -->
<petalsCDK:operation>operation</petalsCDK:operation>
<petalsCDK:mep>InOnly</petalsCDK:mep>
<!-- Component specific elements -->
<mail:scheme>pop3</mail:scheme>
<mail:host>pop.host.com</mail:host>
<mail:port>110</mail:port>
<mail:user>user</mail:user>
<mail:password>password</mail:password>
<mail:folder>INBOX</mail:folder>
<mail:period>60000</mail:period>
</jbi:consumes>
</jbi:services>
</jbi:jbi>
{code}
{center}
{include:0 CDK SU Consume Configuration}
\\
{center}{*}Configuration of a Service Unit to consume a service (Mail)*{center}
{table-plus:columnAttributes=,,style="text-align:center;",style="text-align:center;"}