Ivan,
you only look at one aspect of the logic.
Please have a look at the DefaultMailMarshaler class.
protected void fillMailHeaders(MimeMessage mimeMessage, MessageExchange
exchange,
NormalizedMessage nmsg, String
configuredSender, String configuredReceiver)
throws Exception {
...
// fill the "From" field of the mail
if (configuredSender != null && configuredSender.trim().length() > 0) {
// if sender is configured through xbean then use it
Address from = InternetAddress.parse(configuredSender)[0];
if (from != null) {
mimeMessage.setFrom(from);
}
} else if (nmsg.getProperty(AbstractMailMarshaler.MSG_TAG_FROM) !=
null) {
// use the delivered From field from the message
Address from =
InternetAddress.parse(nmsg.getProperty(AbstractMailMarshaler.MSG_TAG_FROM)
.toString())[0];
if (from != null) {
mimeMessage.setFrom(from);
}
} else {
// there was no From field delivered, so use the default sender
Address from =
InternetAddress.parse(getDefaultSenderForOutgoingMails())[0];
if (from != null) {
mimeMessage.setFrom(from);
}
}
...
I hope this makes it more clear to you. If you write your own marshaler, then
you are also responsible for filling the mail properties correctly. When using
the default marshaler, all should work fine if you did it correct.
Regards
Lars
Am Freitag 10 Oktober 2008 15:30:05 schrieb ivan:
> Hi!
>
> I read at http://servicemix.apache.org/servicemix-mail.html:
>
> <<<
> How is the sender determined?
>
> if there is a preconfigured sender for the endpoint from xbean.xml, it
> will be used
> else if MSG_TAG_FROM is defined in the message properties, then it will
> be used
> else the method getDefaultSender() of the marshaler is invoked
>
>
>
> Also I looked at the source (I downloaded it some month ago from
> 3.3-SNAPSHOT):
>
> <<< MailSenderEndpoint.java
>
> public void validate() throws DeploymentException {
> super.validate();
>
> if (this.config == null || this.connection == null) {
> throw new DeploymentException("No valid connection uri
> provided.");
> }
> if (this.sender == null) {
> this.sender = this.marshaler != null
> ? this.marshaler.getDefaultSenderForOutgoingMails() :
> AbstractMailMarshaler.DEFAULT_SENDER;
> }
> }
>
>
>
> So, it seems, there is no way to configure "sender" header for e-mail
> via MSG_TAG_FROM.
>
> Am I right? Or maybe it is already fixed?
>
> Truly yours,
> Ivan Pryvalov.