Pete Helgren
Pete Helgren

Reputation: 448

Sending email in WSO2 adds spurious forward slash resulting in error 401003

I have been chasing this error for months but cannot determine where it is coming from. I have a fault sequence (not written by me) that sends an email address. The relevant part is (I think):

            <property name="Subject" scope="transport" type="STRING" value="WSO2 Error Report"/>
            <property name="MessageType" scope="axis2" type="STRING" value="text/html"/>
            <property name="ContentType" scope="axis2" type="STRING" value="text/html"/>
            <header expression="concat('mailto:','[email protected],[email protected]')" name="To" scope="default"/>
            <property name="FORCE_CONTENT_TYPE_BASED_FORMATTER" scope="axis2" type="STRING" value="true"/>
            <property name="FORCE_SC_ACCEPTED" scope="axis2" type="STRING" value="true"/>
            <property name="OUT_ONLY" scope="default" type="STRING" value="true"/>
            <call>
                <endpoint>
                    <default/>
                </endpoint>
            </call>

This is the only place where I have two email addresses to send to. When this sequence is triggered I see this error in my Kibana logs:

Message :: = An unexpected error occurred, :: ERROR_MESSAGE :: = Invalid target address/es : [email protected],[email protected]/, :: ERROR_CODE :: = 401003

I know what the error is...it's that trailing forward slash, but I have NO idea of where it is coming from. I don't know enough about WSO2 sequences to know where to look. The forward slash isn't in the XML file but where would I look to see how the email is formatted before it is sent? Seems like that would be in the "default" endpoint but I don't know what that is, even after reading up on the WSO2 ESB docs.

Running 6.6.0 of EI.

WSO2 Logs entry/stacktrace:

ERROR {org.apache.axis2.transport.mail.MailTransportSender} - Invalid target address/es : [email protected],[email protected]/ javax.mail.internet.AddressException: Domain contains illegal character in string ``[email protected]/''
at javax.mail.internet.InternetAddress.checkAddress(InternetAddress.java:1432)
at javax.mail.internet.InternetAddress.parse(InternetAddress.java:1215)
at javax.mail.internet.InternetAddress.parse(InternetAddress.java:752)
at javax.mail.internet.InternetAddress.parse(InternetAddress.java:729)
at org.apache.axis2.transport.mail.MailTransportSender.sendMessage(MailTransportSender.java:172)
at org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:112)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
at org.apache.axis2.description.OutOnlyAxisOperationClient.executeImpl(OutOnlyAxisOperation.java:297)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:149)
at org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:634)
at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:85)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:571)
at org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:408)
at org.apache.synapse.endpoints.DefaultEndpoint.send(DefaultEndpoint.java:88)
at org.apache.synapse.mediators.builtin.CallMediator.handleNonBlockingCall(CallMediator.java:278)
at org.apache.synapse.mediators.builtin.CallMediator.mediate(CallMediator.java:122)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
at org.apache.synapse.mediators.eip.Target.mediateMessage(Target.java:255)
at org.apache.synapse.mediators.eip.Target.mediate(Target.java:110)
at org.apache.synapse.mediators.eip.splitter.CloneMediator.mediate(CloneMediator.java:119)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
at org.apache.synapse.mediators.MediatorFaultHandler.onFault(MediatorFaultHandler.java:96)
at org.apache.synapse.FaultHandler.handleFault(FaultHandler.java:101)
at org.apache.synapse.mediators.eip.Target.mediateMessage(Target.java:259)
at org.apache.synapse.mediators.eip.Target.mediate(Target.java:132)
at org.apache.synapse.mediators.eip.splitter.CloneMediator.mediate(CloneMediator.java:119)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
at org.apache.synapse.config.xml.AnonymousListMediator.mediate(AnonymousListMediator.java:37)
at org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMediator.java:205)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
at org.apache.synapse.config.xml.AnonymousListMediator.mediate(AnonymousListMediator.java:37)
at org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMediator.java:205)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
at org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMediator.java:171)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
at org.apache.synapse.rest.Resource.process(Resource.java:344)
at org.apache.synapse.rest.API.process(API.java:441)
at org.apache.synapse.rest.RESTRequestHandler.apiProcess(RESTRequestHandler.java:135)
at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:113)
at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:71)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:327)
at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:98)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:368)
at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:427)
at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:182)
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

NORE: The email addresses listed are not the actual addresses but the forwardslash IS as well as the complete stacktrace.

Upvotes: 0

Views: 304

Answers (1)

Dilan Premarathna
Dilan Premarathna

Reputation: 1294

When you want to have dynamic endpoints, one option is to use the default endpoint [1]. Here what happens is that you will create a "TO" header with the URL that you need to invoke. In your case it is the following.

<header expression="concat('mailto:','[email protected],[email protected]')" name="To" scope="default"/>

After that when you invoke the default endpoint it will search for the TO header and send the message to this particular URL. The expression concat is used to concatenate the strings. You can refer to the document on mailto transport to further clarify this [2].

As per the given expression there does not seem to have a trailing black slash. But you can try to log this header value and check if there are any unwanted characters added to the URL.

[1] https://docs.wso2.com/display/EI660/Default+Endpoint [2] https://docs.wso2.com/display/EI660/MailTo+Transport

Upvotes: 0

Related Questions