* Step 1 : A JBI Consumer sends a Message Exchange to the Mail Binding Component.
* Step 2 : Mail Binding Component processes the Message Exchange : transforms it into a mail message and retrieve targeted External Provider Service (email address) linked to the endpoint set in the Message Exchange.
* Step 3 : Mail Binding Component sends this new mail to the targeted External Provider Service (Business Service, simple email account...).
h2. Dynamic Exposition
The component can expose directly a generic SendMail service without deploying a service unit.
To allow the component to provide his generic service, the component must have a wsdl with the name : component.wsdl. An example of this file is present in the component.To deactivate the generic service supplies by the component,simply erase the file : component.wsdl.
Parameters (host, port, user, passwordl) have to be defined at component level (cf section *Component Configuration*), otherwise the component can not know the technical information of the smtp server necessary for the generic sendMail service.
\\
This service offer two mode :
* In-Payload mode: The service allows the consumer to send a specific XML message to the component, which defines all the information needed to send an email.
The message send by the consumer has to respect the following definition:
{code:lang=xml}
<ns0:mail xmlns:ns0="http://petals.ow2.org/components/mail/version-3.0">
<ns0:from>from@from.com</ns0:from>
<ns0:reply>reply@reply.com</ns0:reply>
<ns0:to>to@to.com</ns0:to>
<ns0:subject>subject</ns0:subject>
<ns0:body>Hello, here is an email</ns0:body>
</ns0:mail>
{code}
* Out-Payload mode : The service allows the consumer to send a JBI message to the component by setting ws-addressing properties in the incoming message exchange which defines all the information needed to send an email.The content of the mail (body) is in the payload of the mesage.
|| Attribute || Description \\ || Default \\ || Required \\ ||
| \{\[http://www.w3.org/2005/08/addressing\]}To | email address of the recipient | \- \\ | Yes \\ |
| \{\[http://www.w3.org/2005/08/addressing\]}From | email address of the sender | \- \\ | Yes \\ |
| \{\[http://www.w3.org/2005/08/addressing\]}ReplyTo | email address for the reply | \- | no |
| \{\[http://www.w3.org/2005/08/addressing\]}Action | the subject of the mail | petals-bc-mail | no |
h2. Static exposition
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 contain a provides node describing the link between an internal jbi endpoint and an external email address.
h3. Usage
Once a provides node is configured, you can start to send email via the mail binding component. You just have to send message exchange to endpoints activated by service unit deployments (containing jbi.xml with provides node).
The IN message looks like :
{code:lang=xml}
<?xml version="1.0" encoding="UTF-8"?>
<mail>[#5]mail by using service unit</mail>
{code}
{warning:title=warning}
InOnly message exchange patterns are allowed.
{warning}
h3. Configuration
|| Parameter || Description || Default || Required ||
| scheme | the connection protocol (smtp) | \- | Yes |
| 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 | \- | Yes |
| 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 |
{include:0 CDK SU Provide Configuration}
h4. Service Unit descriptor
{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">
<!-- Import a Service into PEtALS => provides a Service. -->
<jbi:provides
interface-name="generatedNs:SendMail"
service-name="generatedNs:SendMailService"
endpoint-name="SendMailServiceEndpoint">
<!-- CDK specific elements -->
<petalsCDK:wsdl>sendMail.wsdl</petalsCDK:wsdl>
<!-- Component specific elements -->
<mail:scheme>smtp</mail:scheme>
<mail:host>smtp.host.com</mail:host>
<mail:port>25</mail:port>
<mail:user>user</mail:user>
<mail:password>password</mail:password>
<mail:from>from email address</mail:from>
<mail:reply>reply email address</mail:reply>
<mail:to>recipient address</mail:to>
<mail:subject>mail subject</mail:subject>
</jbi:provides>
</jbi:services>
</jbi:jbi>
{code}
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