servicemix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache ServiceMix: servicemix-mail (page edited)
Date Wed, 26 Nov 2008 22:23:00 GMT
<html>
<head>
    <base href="http://cwiki.apache.org/confluence" />
    <style type="text/css">
    <!--
    body, p, td, table, tr, .bodytext, .stepfield {
	font-family: Verdana, arial, sans-serif;
	font-size: 11px;
	line-height: 16px;
	color: #000000;
	font-weight: normal;
}
#PageContent {
	text-align: left;
	background-color: #fff;
	padding: 0px;
	margin: 0px;
    padding-bottom:20px;
}
/*
** when this stylesheet is used for the Tiny MCE Wysiwyg editor's edit area, we can't
** use an id=PageContent or class=wiki-content, so we must
** set the body style to that used for PageContent, and p to that used for wiki-content.
*/

body {
	margin: 0px;
	padding: 0px;
	text-align: center;
    background-color: #f0f0f0;
}

@media print {

body {
    background-color: #fff;
}

}

.monospaceInput {
    font:12px monospace
}

.wiki-content p, .commentblock p {
    margin: 16px 0px 16px 0px;
    padding: 0px;
}

.wiki-content-preview {
    padding: 5px;
    border-left: 1px solid #3c78b5;
    border-right: 1px solid #3c78b5;
}

ul, ol {
    margin-top: 2px;
    margin-bottom: 2px;
    padding-top: 0px;
    padding-bottom: 0px;
}

pre {
    padding: 0px;
    margin-top: 5px;
    margin-left: 15px;
    margin-bottom: 5px;
    margin-right: 5px;
    text-align: left;
}

.helpheading {
    font-weight: bold;
    background-color: #D0D9BD;
        border-bottom: 1px solid #3c78b5;
        padding: 4px 4px 4px 4px;
        margin: 0px;
        margin-top: 10px;
}
.helpcontent {
        padding: 4px 4px 20px 4px;
    background-color: #f5f7f1;
}

.code {
 	border: 1px dashed #3c78b5;
    font-size: 11px;
	font-family: Courier;
    margin: 10px;
	line-height: 13px;
}

.focusedComment {
    background: #ffffce;
}

.commentBox, .focusedComment {
    padding: 10px;
    margin: 5px 0 5px 0;
    border: 1px #bbb solid;
}

.codeHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.codeContent {
    text-align: left;
    background-color: #f0f0f0;
    padding: 3px;
}

.preformatted {
 	border: 1px dashed #3c78b5;
    font-size: 11px;
	font-family: Courier;
    margin: 10px;
	line-height: 13px;
}

.preformattedHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.preformattedContent {
    background-color: #f0f0f0;
    padding: 3px;
}

.panel {
 	border: 1px dashed #3c78b5;
    margin: 10px;
    margin-top: 0px;
}

.panelHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.panelContent {
    background-color: #f0f0f0;
    padding: 5px;
}

.anonymousAlert {
    background-color: #f0f0f0;
 	border: 1px dashed red;
    font-size: 11px;
    padding: 10px 5px 10px 5px;
    margin: 4px;
	line-height: 13px;
}

.lockAlert {
    background-color: #f0f0f0;
    width: 50%;
 	border: 1px dashed red;
    font-size: 11px;
    padding: 10px 5px 10px 5px;
    margin: 4px;
	line-height: 13px;
}


.code-keyword {
  color: #000091;
  background-color: inherit;
}

.code-object {
  color: #910091;
  background-color: inherit;
}

.code-quote {
  color: #009100;
  background-color: inherit;
}

.code-comment {
  color: #808080;
  background-color: inherit;
}


.code-xml .code-keyword {
  color: inherit;
  font-weight: bold;
}

.code-tag {
  color: #000091;
  background-color: inherit;
}

.breadcrumbs {
    background-color: #f0f0f0;
 	border-color: #3c78b5;
	border-width: 1px 0px 1px 0px;
	border-style: solid;
    font-size: 11px;
    padding: 3px 0px 3px 0px;
}

.navmenu {
    border: 1px solid #ccc;
}

.menuheading {
    font-weight: bold;
    background-color: #f0f0f0;
 	border-bottom: 1px solid #3c78b5;
	padding: 4px 4px 2px 4px;
}

.menuitems {
	padding: 4px 4px 20px 4px;
}

.rightpanel {
    border-left: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
}

#helpheading {
    text-align: left;
    font-weight: bold;
    background-color: #D0D9BD;
 	border-bottom: 1px solid #3c78b5;
	padding: 4px 4px 4px 4px;
	margin: 0px;
}
#helpcontent {
	padding: 4px 4px 4px 4px;
    background-color: #f5f7f1;
}
.helptab-unselected {
    font-weight: bold;
	padding: 5px;
    background-color: #f5f7f1;
}
.helptab-selected {
    font-weight: bold;
    background-color: #D0D9BD;
	padding: 5px;
}
.helptabs {
    margin: 0px;
    background-color: #f5f7f1;
	padding: 5px;
}
.infopanel-heading {
    font-weight: bold;
	padding: 4px 0px 2px 0px;
}

.pagebody {
}

.pageheader {
	padding: 5px 5px 5px 0px;
 	border-bottom: 1px solid #3c78b5;
}

.pagetitle {
	font-size: 22px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
}

.newpagetitle {
    color: #ccc !important;
}

.steptitle {
	font-size: 18px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
	margin-bottom: 7px;
}

.substeptitle {
    font-size: 12px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
    margin: 2px 4px 4px 4px;
    padding: 2px 4px 1px 4px;
}

.stepdesc {
    font-family: Verdana, arial, sans-serif;
	font-size: 11px;
	line-height: 16px;
	font-weight: normal;
    color: #666666;
    margin-top: 7px;
    margin-bottom: 7px;
}

.steplabel {
    font-weight: bold;
    margin-right: 4px;
    color: black;
    float: left;
    width: 15%;
    text-align: right;
}

.stepfield {
    background: #f0f0f0;
    padding: 5px;
}

.submitButtons{
    margin-top:5px;
    text-align:right;
}

.formtitle {
	font-size: 12px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
}

.sectionbottom {
    border-bottom: 1px solid #3c78b5;
}

.topRow {
    border-top: 2px solid #3c78b5;
}

.tabletitle {
	font-size: 14px;
	font-weight: bold;
	font-family: Arial, sans-serif;
    padding: 3px 0px 2px 0px;
    margin: 8px 4px 2px 0px;
	color: #003366;
	border-bottom: 2px solid #3c78b5;
}
.pagesubheading {
    color: #666666;
    font-size: 10px;
    padding: 0px 0px 5px 0px;
}

HR {
	color: 3c78b5;
	height: 1;
}

A:link, A:visited, A:active, A:hover {
	color: #003366;
}

h1 A:link, h1 A:visited, h1 A:active {
	text-decoration: none;
}

h1 A:hover {
    border-bottom: 1px dotted #003366;
}

.wiki-content > :first-child, .commentblock > :first-child {
    margin-top: 3px;
}

.logocell {
    padding: 10px;
}

input {
	font-family: verdana, geneva, arial, sans-serif;
	font-size: 11px;
	color: #000000;
}

textarea, textarea.editor {
	font-family: verdana, geneva, arial, sans-serif;
	font-size: 11px;
	color: #333333;
}

/* use logoSpaceLink instead.
.spacenametitle {
	font: 21px/31px Impact, Arial, Helvetica;
    font-weight: 100;
    color: #999999;
	margin: 0px;
}
.spacenametitle img {
  margin: 0 0 -4px 0;
}
.spacenametitle a {
    text-decoration: none;
    color: #999999;
}
.spacenametitle a:visited {
    text-decoration: none;
    color: #999999;
}*/

.spacenametitle-printable {
	font: 20px/25px Impact, Arial, Helvetica;
    font-weight: 100;
    color: #999999;
	margin: 0px;
}
.spacenametitle-printable a {
    text-decoration: none;
    color: #999999;
}
.spacenametitle-printable a:visited {
    text-decoration: none;
    color: #999999;
}

.blogDate {
	font-weight: bold;
	text-decoration: none;
	color: black;
}

.blogSurtitle {
    background: #f0f0f0;
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.blogHeading {
    font-size: 20px;
    line-height: normal;
    font-weight: bold;
    padding: 0px;
    margin: 0px;
}

.blogHeading a {
   text-decoration: none;
   color: black;
}

.endsection {
	align: right;
	color: #666666;
	margin-top: 10px;
}
.endsectionleftnav {
	align: right;
	color: #666666;
	margin-top: 10px;
}

h1 {
	font-size: 24px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	color: #003366;
 	border-bottom: 1px solid #3c78b5;
	padding: 2px;
	margin: 36px 0px 4px 0px;
}

h2 {
	font-size: 18px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
 	border-bottom: 1px solid #3c78b5;
	padding: 2px;
	margin: 27px 0px 4px 0px;
}

h3 {
	font-size: 14px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 21px 0px 4px 0px;
}

h4 {
	font-size: 12px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 18px 0px 4px 0px;
}

h4.search {
	font-size: 12px;
	line-height: normal;
	font-weight: normal;
	background-color: #f0f0f0;
	padding: 4px;
	margin: 18px 0px 4px 0px;
}

h5 {
	font-size: 10px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 14px 0px 4px 0px;
}

h6 {
	font-size: 8px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 14px 0px 4px 0px;
}

.smallfont {
    font-size: 10px;
}
.descfont {
    font-size: 10px;
    color: #666666;
}
.smallerfont {
    font-size: 9px;
}
.smalltext {
    color: #666666;
    font-size: 10px;
}
.smalltext a {
    color: #666666;
}
.smalltext-blue {
    color: #3c78b5;
    font-size: 10px;
}
.surtitle {
    margin-left: 1px;
    margin-bottom: 5px;
    font-size: 14px;
    color: #666666;
}

/* css hack found here:  http://www.fo3nix.pwp.blueyonder.co.uk/tutorials/css/hacks/ */
.navItemOver { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #003366; cursor: hand; voice-family: '\'}\''; voice-family:inherit; cursor: pointer;}
.navItemOver a { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItemOver a:visited { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItemOver a:hover { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItem { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; }
.navItem a { color: #ffffff; text-decoration: none; }
.navItem a:hover { color: #ffffff; text-decoration: none; }
.navItem a:visited { color: #ffffff; text-decoration: none; }

div.padded { padding: 4px; }
div.thickPadded { padding: 10px; }
h3.macrolibrariestitle {
    margin: 0px 0px 0px 0px;
}

div.centered { text-align: center; margin: 10px; }
div.centered table {margin: 0px auto; text-align: left; }

.tableview table {
    margin: 0;
}

.tableview th {
    text-align: left;
    color: #003366;
    font-size: 12px;
    padding: 5px 0px 0px 5px;
    border-bottom: 2px solid #3c78b5;
}
.tableview td {
    text-align: left;
    border-color: #ccc;
    border-width: 0px 0px 1px 0px;
    border-style: solid;
    margin: 0;
    padding: 4px 10px 4px 5px;
}

.grid {
    margin: 2px 0px 5px 0px;
    border-collapse: collapse;
}
.grid th  {
    border: 1px solid #ccc;
    padding: 2px 4px 2px 4px;
    background: #f0f0f0;
    text-align: center;
}
.grid td  {
    border: 1px solid #ccc;
    padding: 3px 4px 3px 4px;
}
.gridHover {
	background-color: #f9f9f9;
}

td.infocell {
    background-color: #f0f0f0;
}
.label {
	font-weight: bold;
	color: #003366;
}

label {
	font-weight: bold;
	color: #003366;
}

.error {
	background-color: #fcc;
}

.errorBox {
	background-color: #fcc;
    border: 1px solid #c00;
    padding: 5px;
    margin: 5px;
}

.errorMessage {
	color: #c00;
}

.success {
	background-color: #dfd;
}

.successBox {
	background-color: #dfd;
    border: 1px solid #090;
    padding: 5px;
    margin-top:5px;
    margin-bottom:5px;
}

blockquote {
	padding-left: 10px;
	padding-right: 10px;
	margin-left: 5px;
	margin-right: 0px;
	border-left: 1px solid #3c78b5;
}

table.confluenceTable
{
    margin: 5px;
    border-collapse: collapse;
}

/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
table.confluenceTable td.confluenceTd
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
}

/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
table.confluenceTable th.confluenceTh
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
    background-color: #f0f0f0;
    text-align: center;
}

td.confluenceTd
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
}

th.confluenceTh
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
    background-color: #f0f0f0;
    text-align: center;
}

DIV.small {
	font-size: 9px;
}

H1.pagename {
	margin-top: 0px;
}

IMG.inline  {}

.loginform {
    margin: 5px;
    border: 1px solid #ccc;
}

/* The text how the "This is a preview" comment should be shown. */
.previewnote { text-align: center;
                font-size: 11px;
                    color: red; }

/* How the preview content should be shown */
.previewcontent { background: #E0E0E0; }

/* How the system messages should be shown (DisplayMessage.jsp) */
.messagecontent { background: #E0E0E0; }

/* How the "This page has been modified..." -comment should be shown. */
.conflictnote { }

.createlink {
    color: maroon;
}
a.createlink {
    color: maroon;
}
.templateparameter {
    font-size: 9px;
    color: darkblue;
}

.diffadded {
    background: #ddffdd;
    padding: 1px 1px 1px 4px;
	border-left: 4px solid darkgreen;
}
.diffdeleted {
    color: #999;
    background: #ffdddd;
    padding: 1px 1px 1px 4px;
	border-left: 4px solid darkred;
}
.diffnochange {
    padding: 1px 1px 1px 4px;
	border-left: 4px solid lightgrey;
}
.differror {
    background: brown;
}
.diff {
    font-family: lucida console, courier new, fixed-width;
	font-size: 12px;
	line-height: 14px;
}
.diffaddedchars {
    background-color:#99ff99;
    font-weight:bolder;
}
.diffremovedchars {
    background-color:#ff9999;
    text-decoration: line-through;
    font-weight:bolder;
}

.greybackground {
    background: #f0f0f0
}

.greybox {
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.borderedGreyBox {
    border: 1px solid #cccccc;
    background-color: #f0f0f0;
    padding: 10px;
}

.greyboxfilled {
 	border: 1px solid #ddd;
    background: #f0f0f0;
    padding: 3px;
	margin: 1px 1px 10px 1px;
}

.navBackgroundBox {
    padding: 5px 5px 5px 5px;
    font-size: 22px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: white;
    background: #3c78b5;
    text-decoration: none;
}

.previewBoxTop {
	background-color: #f0f0f0;
    border-width: 1px 1px 0px 1px;
    border-style: solid;
    border-color: #3c78b5;
    padding: 5px;
    margin: 5px 0px 0px 0px;
    text-align: center;
}
.previewContent {
    background-color: #fff;
 	border-color: #3c78b5;
	border-width: 0px 1px 0px 1px;
	border-style: solid;
	padding: 10px;
	margin: 0px;
}
.previewBoxBottom {
	background-color: #f0f0f0;
    border-width: 0px 1px 1px 1px;
    border-style: solid;
    border-color: #3c78b5;
    padding: 5px;
    margin: 0px 0px 5px 0px;
    text-align: center;
}

.functionbox {
    background-color: #f0f0f0;
 	border: 1px solid #3c78b5;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.functionbox-greyborder {
    background-color: #f0f0f0;
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.search-highlight {
    background-color: #ffffcc;
}

/* normal (white) background */
.rowNormal {
    background-color: #ffffff;
 }

/* alternate (pale yellow) background */
.rowAlternate {
    background-color: #f7f7f7;
}

/* used in the list attachments table */
.rowAlternateNoBottomColor {
    background-color: #f7f7f7;
}

.rowAlternateNoBottomNoColor {
}

.rowAlternateNoBottomColor td {
    border-bottom: 0px;
}

.rowAlternateNoBottomNoColor td {
    border-bottom: 0px;
}

/* row highlight (grey) background */
.rowHighlight {
    background-color: #f0f0f0;

}

TD.greenbar {FONT-SIZE: 2px; BACKGROUND: #00df00; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TD.redbar {FONT-SIZE: 2px; BACKGROUND: #df0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TD.darkredbar {FONT-SIZE: 2px; BACKGROUND: #af0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }

TR.testpassed {FONT-SIZE: 2px; BACKGROUND: #ddffdd; PADDING: 0px; }
TR.testfailed {FONT-SIZE: 2px; BACKGROUND: #ffdddd; PADDING: 0px; }

.toolbar  {
    margin: 0px;
    border-collapse: collapse;
}

.toolbar td  {
    border: 1px solid #ccc;
    padding: 2px 2px 2px 2px;
    color: #ccc;
}

td.noformatting {
    border-width: 0px;
    border-style: none;
    text-align: center;
	padding: 0px;
}

.commentblock {
    margin: 12px 0 12px 0;
}

/*
 * Divs displaying the license information, if necessary.
 */
.license-eval, .license-none, .license-nonprofit {
    border-top: 1px solid #bbbbbb;
    text-align: center;
    font-size: 10px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
}

.license-eval, .license-none {
    background-color: #ffcccc;
}

.license-eval b, .license-none b {
    color: #990000
}

.license-nonprofit {
    background-color: #ffffff;
}

/*
 * The shadow at the bottom of the page between the main content and the
 * "powered by" section.
 */
.bottomshadow {
    height: 12px;
    background-image: url("$req.contextPath/images/border/border_bottom.gif");
    background-repeat: repeat-x;
}

/*
 * Styling of the operations box
 */
.navmenu .operations li, .navmenu .operations ul {
    list-style: none;
    margin-left: 0;
    padding-left: 0;
}

.navmenu .operations ul {
    margin-bottom: 9px;
}

.navmenu .label {
    font-weight: inherit;
}

/*
 * Styling of ops as a toolbar
 */
.toolbar div {
    display: none;
}

.toolbar .label {
    display: none;
}

.toolbar .operations {
    display: block;
}

.toolbar .operations ul {
    display: inline;
    list-style: none;
    margin-left: 10px;
    padding-left: 0;
}

.toolbar .operations li {
    list-style: none;
    display: inline;
}

/* list page navigational tabs */
#foldertab {
padding: 3px 0px 3px 8px;
margin-left: 0;
border-bottom: 1px solid #3c78b5;
font: bold 11px Verdana, sans-serif;
}

#foldertab li {
list-style: none;
margin: 0;
display: inline;
}

#foldertab li a {
padding: 3px 0.5em;
margin-left: 3px;
border: 1px solid #3c78b5;
border-bottom: none;
background: #3c78b5;
text-decoration: none;
}

#foldertab li a:link { color: #ffffff; }
#foldertab li a:visited { color: #ffffff; }

#foldertab li a:hover {
color: #ffffff;
background: #003366;
border-color: #003366;
}

#foldertab li a.current {
background: white;
border-bottom: 1px solid white;
color: black;
}

#foldertab li a.current:link { color: black; }
#foldertab li a.current:visited { color: black; }
#foldertab li a.current:hover {
background: white;
border-bottom: 1px solid white;
color: black;
}

/* alphabet list */
ul#squaretab {
margin-left: 0;
padding-left: 0;
white-space: nowrap;
font: bold 8px Verdana, sans-serif;
}

#squaretab li {
display: inline;
list-style-type: none;
}

#squaretab a {
padding: 2px 6px;
border: 1px solid #3c78b5;
}

#squaretab a:link, #squaretab a:visited {
color: #fff;
background-color: #3c78b5;
text-decoration: none;
}

#squaretab a:hover {
color: #ffffff;
background-color: #003366;
border-color: #003366;
text-decoration: none;
}

#squaretab li a#current {
background: white;
color: black;
}

.blogcalendar * {
    font-family:verdana, arial, sans-serif;
    font-size:x-small;
    font-weight:normal;
    line-height:140%;
    padding:2px;
}


table.blogcalendar {
    border: 1px solid #3c78b5;
}

.blogcalendar th.calendarhead, a.calendarhead {
    font-size:x-small;
    font-weight:bold;
    padding:2px;
    text-transform:uppercase;
    background-color: #3c78b5;
    color: #ffffff;
    letter-spacing: .3em;
    text-transform: uppercase;
}

.calendarhead:visited {color: white;}
.calendarhead:active {color: white;}
.calendarhead:hover {color: white;}

.blogcalendar th {
    font-size:x-small;
    font-weight:bold;
    padding:2px;
    background-color:#f0f0f0;
}

.blogcalendar td {
    font-size:x-small;
    font-weight:normal;
}

.searchGroup { padding: 0 0 10px 0; background: #f0f0f0; }
.searchGroupHeading { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; padding: 2px 4px 1px 4px; }
.searchItem { padding: 1px 4px 1px 4px; }
.searchItemSelected { padding: 1px 4px 1px 4px; font-weight: bold; background: #ddd; }

/* permissions page styles */
.permissionHeading {
    border-bottom: #bbb; border-width: 0 0 1px 0; border-style: solid; font-size: 16px; text-align: left;
}
.permissionTab {
    border-width: 0 0 0 1px; border-style: solid; background: #3c78b5; color: #ffffff; font-size: 10px;
}
.permissionSuperTab {
    border-width: 0 0 0 1px; border-style: solid; background: #003366; color: #ffffff;
}
.permissionCell {
    border-left: #bbb; border-width: 0 0 0 1px; border-style: solid;
}

/* warning panel */
.warningPanel { background: #FFFFCE; border:#F0C000 1px solid; padding: 8px; margin: 10px; }
/* alert panel */
.alertPanel { background: #FFCCCC; border:#C00 1px solid; padding: 8px; margin: 10px; }
/* info panel */
.infoPanel { background: #D8E4F1; border:#3c78b5 1px solid; padding: 8px; margin: 10px; }

/* side menu highlighting (e.g. space content screen) */
.optionPadded { padding: 2px; }
.optionSelected { background-color: #ffffcc; padding: 2px; border: 1px solid #ddd; margin: -1px; }
.optionSelected a { font-weight: bold; text-decoration: none; color: black; }

/* information macros */
.noteMacro { border-style: solid; border-width: 1px; border-color: #F0C000; background-color: #FFFFCE; text-align:left; margin-top: 5px; margin-bottom: 5px}
.warningMacro { border-style: solid; border-width: 1px; border-color: #c00; background-color: #fcc; text-align:left; margin-top: 5px; margin-bottom: 5px}
.infoMacro { border-style: solid; border-width: 1px; border-color: #3c78b5; background-color: #D8E4F1; text-align:left; margin-top: 5px; margin-bottom: 5px}
.tipMacro { border-style: solid; border-width: 1px; border-color: #090; background-color: #dfd; text-align:left; margin-top: 5px; margin-bottom: 5px}
.informationMacroPadding { padding: 5px 0 0 5px; }

table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
    border: none;
}

table.sectionMacroWithBorder td.columnMacro { border-style: dashed; border-width: 1px; border-color: #cccccc;}

.pagecontent
{
    padding: 10px;
    text-align: left;
}

/* styles for links in the top bar */
.topBarDiv a:link {color: #ffffff;}
.topBarDiv a:visited {color: #ffffff;}
.topBarDiv a:active {color: #ffffff;}
.topBarDiv a:hover {color: #ffffff;}
.topBarDiv {color: #ffffff;}

.topBar {
    background-color: #003366;
}


/* styles for extended operations */
.greyLinks a:link {color: #666666; text-decoration:underline;}
.greyLinks a:visited {color: #666666; text-decoration:underline;}
.greyLinks a:active {color: #666666; text-decoration:underline;}
.greyLinks a:hover {color: #666666; text-decoration:underline;}
.greyLinks {color: #666666; display:block; padding: 10px}

.logoSpaceLink {color: #999999; text-decoration: none}
.logoSpaceLink a:link {color: #999999; text-decoration: none}
.logoSpaceLink a:visited {color: #999999; text-decoration: none}
.logoSpaceLink a:active {color: #999999; text-decoration: none}
.logoSpaceLink a:hover {color: #003366; text-decoration: none}

/* basic panel (basicpanel.vmd) style */
.basicPanelContainer {border: 1px solid #3c78b5; margin-top: 2px; margin-bottom: 8px; width: 100%}
.basicPanelTitle {padding: 5px; margin: 0px; background-color: #f0f0f0; color: black; font-weight: bold;}
.basicPanelBody {padding: 5px; margin: 0px}

.separatorLinks a:link {color: white}
.separatorLinks a:visited {color: white}
.separatorLinks a:active {color: white}

.greynavbar {background-color: #f0f0f0; border-top: 1px solid #3c78b5; margin-top: 2px}

div.headerField {
    float: left;
    width: auto;
    height: 100%;
}

.headerFloat {
    margin-left: auto;
    width: 50%;
}

.headerFloatLeft {
    float: left;
    margin-right: 20px;
    margin-bottom: 10px;
}

#headerRow {
    padding: 10px;
}

div.license-personal {
   background-color: #003366;
   color: #ffffff;
}

div.license-personal a {
   color: #ffffff;
}

.greyFormBox {
    border: 1px solid #cccccc;
    padding: 5px;
}

/* IE automatically adds a margin before and after form tags. Use this style to remove that */
.marginlessForm {
    margin: 0px;
}

.openPageHighlight {
    background-color: #ffffcc;
    padding: 2px;
    border: 1px solid #ddd;
}

.editPageInsertLinks, .editPageInsertLinks a
{
    color: #666666;
    font-weight: bold;
    font-size: 10px;
}

/* Style for label heatmap. */
.top10 a {
    font-weight: bold;
    font-size: 2em;
    color: #003366;
}
.top25 a {
    font-weight: bold;
    font-size: 1.6em;
    color: #003366;
}
.top50 a {
    font-size: 1.4em;
    color: #003366;
}
.top100 a {
    font-size: 1.2em;
    color: #003366;
}

.heatmap {
    list-style:none;
    width: 95%;
    margin: 0px auto;
}

.heatmap a {
    text-decoration:none;
}

.heatmap a:hover {
    text-decoration:underline;
}

.heatmap li {
    display: inline;
}

.minitab {
padding: 3px 0px 3px 8px;
margin-left: 0;
margin-top: 1px;
margin-bottom: 0px;
border-bottom: 1px solid #3c78b5;
font: bold 9px Verdana, sans-serif;
text-decoration: none;
float:none;
}
.selectedminitab {
padding: 3px 0.5em;
margin-left: 3px;
margin-top: 1px;
border: 1px solid #3c78b5;
background: white;
border-bottom: 1px solid white;
color: #000000;
text-decoration: none;
}
.unselectedminitab {
padding: 3px 0.5em;
margin-left: 3px;
margin-top: 1px;
border: 1px solid #3c78b5;
border-bottom: none;
background: #3c78b5;
color: #ffffff;
text-decoration: none;
}

a.unselectedminitab:hover {
color: #ffffff;
background: #003366;
border-color: #003366;
}

a.unselectedminitab:link { color: white; }
a.unselectedminitab:visited { color: white; }

a.selectedminitab:link { color: black; }
a.selectedminitab:visited { color: black; }

.linkerror { background-color: #fcc;}

a.labelOperationLink:link {text-decoration: underline}
a.labelOperationLink:active {text-decoration: underline}
a.labelOperationLink:visited {text-decoration: underline}
a.labelOperationLink:hover {text-decoration: underline}

a.newLabel:link {background-color: #ddffdd}
a.newLabel:active {background-color: #ddffdd}
a.newLabel:visited {background-color: #ddffdd}
a.newLabel:hover {background-color: #ddffdd}

ul.square {list-style-type: square}

.inline-control-link {
    background: #ffc;
    font-size: 9px;
    color: #666;
    padding: 2px;
    text-transform: uppercase;
    text-decoration: none;
}


.inline-control-link a:link {text-decoration: none}
.inline-control-link a:active {text-decoration: none}
.inline-control-link a:visited {text-decoration: none}
.inline-control-link a:hover {text-decoration: none}

.inline-control-link {
    background: #ffc;
    font-size: 9px;
    color: #666;
    padding: 2px;
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
}

div.auto_complete {
    width: 350px;
    background: #fff;
}
div.auto_complete ul {
    border: 1px solid #888;
    margin: 0;
    padding: 0;
    width: 100%;
    list-style-type: none;
}
div.auto_complete ul li {
    margin: 0;
    padding: 3px;
}
div.auto_complete ul li.selected {
    background-color: #ffb;
}
div.auto_complete ul strong.highlight {
    color: #800;
    margin: 0;
    padding: 0;
}

/******* Edit Page Styles *******/
.toogleFormDiv{
    border:1px solid #A7A6AA;
    background-color:white;
    padding:5px;
    margin-top: 5px;
}

.toogleInfoDiv{
    border:1px solid #A7A6AA;
    background-color:white;
    display:none;
    padding:5px;
    margin-top: 10px;
}

.inputSection{
    margin-bottom:20px;
}

#editBox{
   border:1px solid lightgray;
   background-color:#F0F0F0;
}

/******* Left Navigation Theme Styles ********/
.leftnav li a {
    text-decoration:none;
    color:white;
    margin:0px;
    display:block;
    padding:2px;
    padding-left:5px;
    background-color: #3c78b5;
    border-top:1px solid #3c78b5;
}

.leftnav li a:active {color:white;}
.leftnav li a:visited {color:white;}
.leftnav li a:hover {background-color: #003366; color:white;}

/* Added by Shaun during i18n */
.replaced
{
    background-color: #33CC66;
}

.topPadding
{
    margin-top: 20px;
}

/* new form style */
.form-block {
    padding: 6px;
}
.form-error-block {
    padding: 6px;
    background: #fcc;
    border-top: #f0f0f0 1px solid;
    border-bottom: #f0f0f0 1px solid;
    margin-bottom: 6px;
    padding: 0 12px 0 12px;
}
.form-element-large {
    font-size: 16px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
}

.form-element-small {
    font-size: 12px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
}

.form-header {
    background: lightyellow;
    border-top: #f0f0f0 1px solid;
    border-bottom: #f0f0f0 1px solid;
    margin-bottom: 6px;
    padding: 0 12px 0 12px;
}
.form-header p, .form-block p, .form-error-block p {
    line-height: normal;
    margin: 12px 0 12px 0;
}
.form-example {
    color: #888;
    font-size: 11px;
}
.form-divider {
    border-bottom: #ccc 1px solid;
    margin-bottom: 6px;
}
.form-buttons {
    margin-top: 6px;
    border-top: #ccc 1px solid;
    border-bottom: #ccc 1px solid;
    background: #f0f0f0;
    padding: 10px;
    text-align: center;
}
.form-buttons input {
    width: 100px;
}
.form-block .error {
    padding: 6px;
    margin-bottom: 6px;
}
    -->
    </style>
</head>
<body>

<div id="PageContent">
<table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%"><tr>
<td valign="top" class="pagebody">

    <div class="pageheader">
        <span class="pagetitle">
            Page Edited :
            <a href="http://cwiki.apache.org/confluence/display/SM">SM</a> :
            <a href="http://cwiki.apache.org/confluence/display/SM/servicemix-mail">servicemix-mail</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/SM/servicemix-mail">servicemix-mail</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~lhein">Lars Heinemann</a>
            <span class="smallfont">(Nov 26, 2008)</span>.
     </p>
    
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=78388&originalVersion=15&revisedVersion=16">(View changes)</a>
     </p>

    <span class="label">Content:</span><br/>
    <div class="greybox wiki-content"><h1><a name="servicemix-mail-ServiceMixMail"></a>ServiceMix Mail</h1>

<p>The ServiceMix Mail component provides support for receiving and sending mails via the enterprise service bus. </p>

<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Availability</b><br />
<p>Note that this component is only available in releases &gt;= 3.3.</p></td></tr></table>

<h2><a name="servicemix-mail-Installation"></a>Installation</h2>

<p>Installing the servicemix-mail component can be done in several ways:</p>
<ul>
	<li>drop the installer zip in an hotdeploy directory monitored by ServiceMix</li>
	<li>using <a href="/confluence/display/SM/Ant+Tasks" title="Ant Tasks">ant tasks</a></li>
</ul>


<p>Note that when using ant tasks, the component is not started, you will have to start it manually using ant tasks or a console.</p>


<h2><a name="servicemix-mail-Creation"></a>Creation</h2>

<p>You can use Maven to create a service unit.</p>

<div class="code"><div class="codeContent">
<pre class="code-java">mvn archetype:create \
    -DarchetypeGroupId=org.apache.servicemix.tooling \
    -DarchetypeArtifactId=servicemix-mail-service-unit \
    -DgroupId=com.mycompany.myproduct \
    -DartifactId=mycomponent.artifact</pre>
</div></div>


<h2><a name="servicemix-mail-Endpoints"></a>Endpoints</h2>

<div class="code"><div class="codeHeader"><b>Sender (provider) endpoint</b></div><div class="codeContent">
<pre class="code-xml">&lt;mail:sender service=<span class="code-quote">"test:myMailService"</span> 
             endpoint=<span class="code-quote">"senderEndpoint"</span>
             sender=<span class="code-quote">"no-reply@servicemix.org"</span>
             receiver=<span class="code-quote">"testreceiver@targethost.com"</span>
             connection=<span class="code-quote">"smtp://lhein@testserver?password=myPass"</span> /&gt;</pre>
</div></div>


<div class="code"><div class="codeHeader"><b>Polling (consumer) endpoint</b></div><div class="codeContent">
<pre class="code-xml">&lt;mail:poller service=<span class="code-quote">"test:myMailService"</span>
             endpoint=<span class="code-quote">"pollerEndpoint"</span>
             targetService=<span class="code-quote">"test:myMailProcessor"</span>
             period=<span class="code-quote">"10000"</span>
             connection=<span class="code-quote">"imap://lhein@testserver:143/INBOX?password=myPass"</span>
             deleteProcessedMessages=<span class="code-quote">"false"</span>
             processOnlyUnseenMessages=<span class="code-quote">"true"</span> /&gt;</pre>
</div></div>


<h2><a name="servicemix-mail-ConsumerEndpoint%28Polling%29"></a>Consumer Endpoint (Polling)</h2>

<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Message Exchange Pattern</b><br />
<p>The poller endpoint will only generate InOnly exchanges.</p></td></tr></table>


<p>The following table shows the additional configuration possibilities of the endpoint other than the configuration of the default <b>PollingEndpoint</b> class.</p>

<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Poller endpoint attributes</b><br />
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Name 		</th>
<th class='confluenceTh'> Type 	</th>
<th class='confluenceTh'> Description 							</th>
<th class='confluenceTh'> Default 				</th>
</tr>
<tr>
<td class='confluenceTd'> connection		</td>
<td class='confluenceTd'> string	</td>
<td class='confluenceTd'> sets the connection information				</td>
<td class='confluenceTd'> null (must be spec'd)			</td>
</tr>
<tr>
<td class='confluenceTd'> deleteProcessedMessages		</td>
<td class='confluenceTd'> boolean	</td>
<td class='confluenceTd'> delete mail from server when it is processed				</td>
<td class='confluenceTd'> false			</td>
</tr>
<tr>
<td class='confluenceTd'> processOnlyUnseenMessages		</td>
<td class='confluenceTd'> boolean	</td>
<td class='confluenceTd'> process only mails which are new (unseen)				</td>
<td class='confluenceTd'> true			</td>
</tr>
<tr>
<td class='confluenceTd'> marshaler		</td>
<td class='confluenceTd'> class		</td>
<td class='confluenceTd'> org.apache.servicemix.mail.marshaler.AbstractMailMarshaler		</td>
<td class='confluenceTd'> DefaultMailMarshaler			</td>
</tr>
<tr>
<td class='confluenceTd'> maxFetchSize          </td>
<td class='confluenceTd'> int           </td>
<td class='confluenceTd'> sets max amount of mails to fetch, -1 means no limit  </td>
<td class='confluenceTd'> -1 </td>
</tr>
<tr>
<td class='confluenceTd'> debugMode		</td>
<td class='confluenceTd'> boolean	</td>
<td class='confluenceTd'> sets the debug mode for the javamail api		</td>
<td class='confluenceTd'> false			</td>
</tr>
<tr>
<td class='confluenceTd'> forgetTopHeaders      </td>
<td class='confluenceTd'> boolean       </td>
<td class='confluenceTd'> the POP3 TOP command will not be used to fetch message headers </td>
<td class='confluenceTd'> false         </td>
</tr>
<tr>
<td class='confluenceTd'> disableTop            </td>
<td class='confluenceTd'> boolean       </td>
<td class='confluenceTd'> headers are retrieved as part of the POP3 RETR command and not TOP    </td>
<td class='confluenceTd'> false         </td>
</tr>
<tr>
<td class='confluenceTd'> customTrustManagers	</td>
<td class='confluenceTd'> string	</td>
<td class='confluenceTd'> sets one or more custom trust managers for use with ssl		</td>
<td class='confluenceTd'> null		</td>
</tr>
<tr>
<td class='confluenceTd'> customProperties      </td>
<td class='confluenceTd'> java.util.Map           </td>
<td class='confluenceTd'> a map of custom properties for the connection                         </td>
<td class='confluenceTd'> null          </td>
</tr>
</tbody></table></td></tr></table>
<table cellpadding='5' width='85%' cellspacing='8px' class='warningMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Version Information</b><br />
<p>The attributes "<b>forgetTopHeaders</b>" and "<b>disableTop</b>" are available in version 2008.02 and above only!</p></td></tr></table>
<p>&nbsp;<br/>
&nbsp;<br/>
The DefaultMailMarshaler (used if no other is set) will convert in the following way:</p>
<ul class="alternate" type="square">
	<li>Headers of the mail are copied 1:1 into the message properties (and concatenated if needed)</li>
	<li>if the mail has only plain text, the content will be put to property MSG_TAG_TEXT and to the message content</li>
	<li>if the mail has only html, the content will be put to property MSG_TAG_HTML and to the message content</li>
	<li>if the mail has both plain text and html, then both will be put to the right property and the content of the message will be the plain text</li>
	<li>attachments are copied 1:1 from mail to message</li>
</ul>



<h3><a name="servicemix-mail-Theconnectionuri"></a>The connection uri</h3>
<p>The connection uri has to be specified in the following way:</p>
<div class="preformatted"><div class="preformattedContent">
<pre> 
Template: &lt;protocol&gt;://&lt;user&gt;@&lt;host&gt;[:&lt;port&gt;][/&lt;folder&gt;]?password=&lt;password&gt;
  OR  
Template: &lt;protocol&gt;://&lt;host&gt;[:&lt;port&gt;][/&lt;folder&gt;]?user=&lt;user&gt;;password=&lt;password&gt;

Example: 
   imap://lhein@imapserver:143/INBOX?password=mypass
   pop3://pop3server/INBOX?user=me@myhome.org;password=mypass

</pre>
</div></div> 

<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Poller endpoint attributes</b><br />
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Name 		</th>
<th class='confluenceTh'> Description				</th>
</tr>
<tr>
<td class='confluenceTd'> protocol		</td>
<td class='confluenceTd'> the protocol to use (example: pop3 or imap)</td>
</tr>
<tr>
<td class='confluenceTd'> user			</td>
<td class='confluenceTd'> the user name used to log into an account</td>
</tr>
<tr>
<td class='confluenceTd'> host			</td>
<td class='confluenceTd'> the name or ip address of the mail server</td>
</tr>
<tr>
<td class='confluenceTd'> port			</td>
<td class='confluenceTd'> the port number to use (optional)</td>
</tr>
<tr>
<td class='confluenceTd'> folder		</td>
<td class='confluenceTd'> the folder to poll from (optional)</td>
</tr>
<tr>
<td class='confluenceTd'> password		</td>
<td class='confluenceTd'> the password for the login</td>
</tr>
</tbody></table></td></tr></table>
<p>&nbsp;<br/>
&nbsp;</p>


<h2><a name="servicemix-mail-ProviderEndpoint%28Sending%29"></a>Provider Endpoint (Sending)</h2>

<p>The following table shows the configuration possibilities of the endpoint.</p>

<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Sender endpoint attributes</b><br />
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Name 		</th>
<th class='confluenceTh'> Type 	</th>
<th class='confluenceTh'> Description 							</th>
<th class='confluenceTh'> Default 				</th>
</tr>
<tr>
<td class='confluenceTd'> connection		</td>
<td class='confluenceTd'> string	</td>
<td class='confluenceTd'> sets the connection information				</td>
<td class='confluenceTd'> null (must be spec'd)			</td>
</tr>
<tr>
<td class='confluenceTd'> sender		</td>
<td class='confluenceTd'> string	</td>
<td class='confluenceTd'> defines the sender address of the mail				</td>
<td class='confluenceTd'> no-reply@localhost			</td>
</tr>
<tr>
<td class='confluenceTd'> receiver		</td>
<td class='confluenceTd'> string	</td>
<td class='confluenceTd'> defines the receiver address of the mail				</td>
<td class='confluenceTd'> null			</td>
</tr>
<tr>
<td class='confluenceTd'> marshaler		</td>
<td class='confluenceTd'> class		</td>
<td class='confluenceTd'> org.apache.servicemix.mail.marshaler.AbstractMailMarshaler		</td>
<td class='confluenceTd'> DefaultMailMarshaler			</td>
</tr>
<tr>
<td class='confluenceTd'> debugMode		</td>
<td class='confluenceTd'> boolean	</td>
<td class='confluenceTd'> sets the debug mode for the javamail api		</td>
<td class='confluenceTd'> false			</td>
</tr>
<tr>
<td class='confluenceTd'> ignoreMessageProperties      </td>
<td class='confluenceTd'> java.util.List       </td>
<td class='confluenceTd'> a list TO address in the IN message will be ignored    </td>
<td class='confluenceTd'> false                 </td>
</tr>
<tr>
<td class='confluenceTd'> customProperties      </td>
<td class='confluenceTd'> java.util.Map           </td>
<td class='confluenceTd'> a map of custom properties for the connection                         </td>
<td class='confluenceTd'> null          </td>
</tr>
<tr>
<td class='confluenceTd'> customTrustManagers	</td>
<td class='confluenceTd'> string	</td>
<td class='confluenceTd'> sets one or more custom trust managers for use with ssl		</td>
<td class='confluenceTd'> null			</td>
</tr>
</tbody></table></td></tr></table>
<p>&nbsp;<br/>
&nbsp;<br/>
The DefaultMailMarshaler (used if no other is set) will convert in the following way:</p>
<ul class="alternate" type="square">
	<li>all properties of the message MSG_TAG_xxxx will be evaluated and used for preparing the mail</li>
	<li>if MSG_TAG_TEXT and/or MSG_TAG_HTML are specified, then the content will be used for preparing the mail content</li>
	<li>if there are no MSG_TAG_TEXT and MSG_TAG_HTML properties, the content of the message will be parsed and converted to the mail body as plain text or html content</li>
	<li>attachments are copied 1:1 from mail to message</li>
</ul>


<h4><a name="servicemix-mail-Howisthesenderdetermined%3F"></a>How is the sender determined?</h4>
<p>if there is a preconfigured sender for the endpoint from xbean.xml, it will be used<br/>
else if MSG_TAG_FROM is defined in the message properties, then it will be used<br/>
else the method getDefaultSender() of the marshaler is invoked</p>


<h4><a name="servicemix-mail-Howisthereceiverdetermined%3F"></a>How is the receiver determined?</h4>
<p>If there is a TO property in the normalized message, then it will be used. <br/>
If this property is missing, then the pre-configured receiver will be used.</p>


<table cellpadding='5' width='85%' cellspacing='8px' class='warningMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Common pitfall regarding the receiver</b><br />
<p>If you are just setting up a mail-bridge (means just a poller connected to a sender for mail forwarding) you will need<br/>
to provide a sender property <b>ignoreMessageProperties</b> as <b>List</b>, containing a list of to ignore message properties. <br/>
Inside you should at least define the <b>org.apache.servicemix.mail.to</b> value, otherwise the receiver will be the receiver of the original mail. <br/>
That would just forward the original mail to the account you are polling from generating a nice mail loop. Be warned!<br/>
<b>This property is available in servicemix-mail-2008.02 and above only!</b><br/>
If you are using an older version you need to write your own mail marshaler to fix this problem.</p></td></tr></table>

<p>For all xbean file endpoint configuration take a look at <a href="/confluence/display/SM/Xml+schemas" title="Xml schemas">Xml schemas</a></p>


<h2><a name="servicemix-mail-Marshalers"></a>Marshalers</h2>

<p>You can write your own marshalers for conversion between mail and normalized message and vice versa.<br/>
To do this you simply need to subclass the <b>org.apache.servicemix.mail.marshaler.AbstractMailMarshaler</b> or even the<br/>
DefaultMailMarshaler if you don't want to start from scratch.</p>

<h3><a name="servicemix-mail-SubclassingtheAbstractMailMarshaler"></a>Subclassing the AbstractMailMarshaler </h3>
<p>For providing your own marshaler you only need to implement two methods:</p>


<h4><a name="servicemix-mail-convertMailToJBI%28...%29"></a>convertMailToJBI(...)</h4>
<p>This method is responsible for translating a received mail message into a jbi compliant normalized message ready to be sent to the bus.</p>


<h4><a name="servicemix-mail-convertJBIToMail%28...%29"></a>convertJBIToMail(...)</h4>
<p>This method is responsible for translating a received normalized message into a mail message ready to be sent to the mail server.</p>


<p>After finishing your marshaler you can simply configure your endpoints to use it:</p>

<div class="code"><div class="codeHeader"><b>Marshaler example</b></div><div class="codeContent">
<pre class="code-xml">&lt;mail:poller service=<span class="code-quote">"test:myMailService"</span> 
             endpoint=<span class="code-quote">"senderEndpoint"</span>
             sender=<span class="code-quote">"no-reply@servicemix.org"</span> 
             connection=<span class="code-quote">"imap://lhein@testserver:143?password=myPass"</span> &gt; 

    <span class="code-tag">&lt;property name=<span class="code-quote">"marshaler"</span>&gt;</span>
        <span class="code-tag">&lt;bean class=<span class="code-quote">"com.mycompany.MyMailMarshaler"</span> /&gt;</span>
    <span class="code-tag">&lt;/property&gt;</span>

<span class="code-tag">&lt;/mail:poller&gt;</span></pre>
</div></div>


<h2><a name="servicemix-mail-Mappingofheadersandproperties"></a>Mapping of headers and properties</h2>

<p>All mail headers are mapped (nearly) one-to-one into message properties. If there are multiple mail headers with the same name, then the values will be concatenated and separated by the semicolon (<tt>;</tt>-character).</p>

<p>There are some more important properties which affect the handling of the message / mail (constants are defined in AbstractMailMarshaler):</p>

<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Special message properties</b><br />
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Constant 			</th>
<th class='confluenceTh'> Value				</th>
<th class='confluenceTh'> Description</th>
</tr>
<tr>
</tr>
<tr>
<td class='confluenceTd'> MSG_TAG_TO			</td>
<td class='confluenceTd'> org.apache.servicemix.mail.to		</td>
<td class='confluenceTd'> The address(es) the mail was or will be sent to.</td>
</tr>
<tr>
<td class='confluenceTd'> MSG_TAG_CC			</td>
<td class='confluenceTd'> org.apache.servicemix.mail.cc		</td>
<td class='confluenceTd'> The addess(es) the mail was or will be sent to as copy.</td>
</tr>
<tr>
<td class='confluenceTd'> MSG_TAG_BCC			</td>
<td class='confluenceTd'> org.apache.servicemix.mail.bcc	</td>
<td class='confluenceTd'> The addess(es) the mail will be sent to as blind copy.</td>
</tr>
<tr>
<td class='confluenceTd'> MSG_TAG_FROM			</td>
<td class='confluenceTd'> org.apache.servicemix.mail.from	</td>
<td class='confluenceTd'> The addess the mail was received from or will be used as sender.</td>
</tr>
<tr>
<td class='confluenceTd'> MSG_TAG_TEXT			</td>
<td class='confluenceTd'> org.apache.servicemix.mail.text	</td>
<td class='confluenceTd'> Contains the plain text content of the mail body if existing.</td>
</tr>
<tr>
<td class='confluenceTd'> MSG_TAG_HTML			</td>
<td class='confluenceTd'> org.apache.servicemix.mail.html	</td>
<td class='confluenceTd'> Contains the html content of the mail body if existing.</td>
</tr>
<tr>
<td class='confluenceTd'> MSG_TAG_SUBJECT		</td>
<td class='confluenceTd'> org.apache.servicemix.mail.subject	</td>
<td class='confluenceTd'> The subject of the received mail or for the mail to be sent.</td>
</tr>
<tr>
<td class='confluenceTd'> MSG_TAG_REPLYTO		</td>
<td class='confluenceTd'> org.apache.servicemix.mail.replyto	</td>
<td class='confluenceTd'> The address to be used as reply-to.</td>
</tr>
<tr>
<td class='confluenceTd'> MSG_TAG_SENTDATE		</td>
<td class='confluenceTd'> org.apache.servicemix.mail.sentdate	</td>
<td class='confluenceTd'> The date the email was sent.</td>
</tr>
<tr>
<td class='confluenceTd'> MSG_TAG_ALTERNATIVE_CONTENT0..n	</td>
<td class='confluenceTd'> org.apache.servicemix.mail.alternativecontent	</td>
<td class='confluenceTd'> Contains the alternative content of the mail body.</td>
</tr>
</tbody></table></td></tr></table>
<p>&nbsp;<br/>
&nbsp;</p>


<h2><a name="servicemix-mail-IMAPSandPOP3S"></a>IMAPS and POP3S</h2>

<p>If you want to use secure protocols like IMAPS or POP3S you have several oportunities to do that.</p>


<h3><a name="servicemix-mail-Thestandardway"></a>The standard way</h3>

<p>The standard way would be to just set the protocol in the connection uri to <em>imaps</em> instead of <em>imap</em>. (same for smtp and pop3)<br/>
Java will then try to verify the certificate of the mail server by following the chain of certificates signing the server's certificate back to one of these well known CA certificates specified in the default java keystore file. (see SSLNOTES.txt of JavaMail API for details)<br/>
If the certificate has no chain (is self signed) then this chain following is impossible. For this case you have to specify the key store to use via system properties:<br/>
   <em>java -Djavax.net.ssl.trustStore=$HOME/.keystore ...</em><br/>
To import keys to that store you may use the <em>keytool</em> command.</p>


<h3><a name="servicemix-mail-Thealternativeway"></a>The alternative way</h3>

<p>You have the possibility to write your own TrustManager and let the component use this custom trust manager. If you want no verification of the servers certificate at all then you can use the shipped <em>DummyTrustManager</em>.</p>

<table cellpadding='5' width='85%' cellspacing='8px' class='warningMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Security Warning</b><br />
<p>Using the <b>DummyTrustManager</b> will provide you <b>NO SECURITY AT ALL!</b></p></td></tr></table>

<h4><a name="servicemix-mail-Howtowriteacustomtrustmanager%3F"></a>How to write a custom trust manager?</h4>

<p>1. You need to subclass a trust manager which implements the TrustManager interface directly or indirectly. The constructor has to be parameterless.<br/>
2. You have to specify the attribute <em>customTrustManagers</em> in the endpoint configuration inside your xbean.xml file. The content will be the full name of the class including the package name (for example: customTrustManagers="com.mycompany.mypackage.MyTrustManager"). If you want to define more then one just use the semicolon ( ; ) to separate the class names.</p>

<div class="code"><div class="codeHeader"><b>Custom Trust Manager Example</b></div><div class="codeContent">
<pre class="code-xml">&lt;mail:poller service=<span class="code-quote">"test:myMailService"</span> 
             endpoint=<span class="code-quote">"pollEndpoint"</span> 
             targetService=<span class="code-quote">"test:myMailProcessingService"</span>
             period=<span class="code-quote">"10000"</span>
             connection=<span class="code-quote">"imaps://lhein@imapserver/INBOX?password=mypass"</span>
             deleteProcessedMessages=<span class="code-quote">"false"</span>
             processOnlyUnseenMessages=<span class="code-quote">"true"</span> 
             customTrustManagers=<span class="code-quote">"org.apache.servicemix.mail.security.DummyTrustManager"</span> /&gt;</pre>
</div></div>

<p>If you are not using a secure protocol the attribute <em>customTrustManager</em> will be ignored at all.</p>


<h2><a name="servicemix-mail-HowtodebugifIgotproblemsconnectingtothemailserver%3F"></a>How to debug if I got problems connecting to the mail server?</h2>

<p>There is a additional attribute you may specify in the endpoints configuration. This attribute is called <b>debugMode</b> and accepts the values <em>"true"</em> or <em>"false"</em>. This will switch the JavaMail debug mode on or off providing useful details to you via console or servicemix.log file.</p>


<h2><a name="servicemix-mail-Usingtemplateengines"></a>Using template engines</h2>

<p><em>NOTHING DONE YET...FEEL FREE TO HELP US OUT HERE.....TODO</em></p>

<h3><a name="servicemix-mail-Velocity"></a>Velocity</h3>

<p><em>NOTHING DONE YET...FEEL FREE TO HELP US OUT HERE.....TODO</em></p></div>


</td></tr></table></div>
<p>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tr>
        <td height="12" background="http://cwiki.apache.org/confluence/images/border/border_bottom.gif"><img src="http://cwiki.apache.org/confluence/images/border/spacer.gif" width="1" height="1" border="0"/></td>
    </tr>
</table>

<div class="smalltext">
    Powered by
    <a href="http://www.atlassian.com/software/confluence/default.jsp?clicked=footer" class="smalltext">Atlassian Confluence</a>
    (Version: 2.2.9 Build:#527 Sep 07, 2006)
    -
    <a href="http://jira.atlassian.com/secure/BrowseProject.jspa?id=10470" class="smalltext">Bug/feature request</a><br/>
    <br>
    <a href="http://cwiki.apache.org/confluence/users/viewnotifications.action">Unsubscribe or edit your notifications preferences</a>

</div>

</body>
</html>


Mime
View raw message