0

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:','email1@domain.org,email2@domain.org')" 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 : email1@domain.org,email2@domain.org/, :: 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 : email1@domain.org,email2@domain.org/ javax.mail.internet.AddressException: Domain contains illegal character in string ``email2@domain.org/''
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.

Community
  • 1
  • 1
Pete Helgren
  • 438
  • 1
  • 7
  • 21
  • Seeing a spelling error in the `Message ::`: be sure to quote such verbatim; if there are peculiarities in the original, it doesn't hurt to point out that you are aware of that. I prefer some decoration, such as *block quote* (`> ` line prefix). – greybeard Dec 25 '20 at 08:12
  • (`I have [contents] not written by me` are you aware that posting here puts contents under a *creative commons* licence?) – greybeard Dec 25 '20 at 10:59
  • Error was copied and pasted out of Kibana. Code was written for our company under contract, not by me. If I had written the code I wouldn't be asking questions about how it works or where to find the slash. That was why it was notated. What is the spelling error in the message? – Pete Helgren Dec 26 '20 at 22:53
  • `unexpected error occured, :: ERROR_` in [revision 1](https://stackoverflow.com/revisions/65428442/1) – greybeard Dec 27 '20 at 00:07
  • So, that is a direct copy and paste from Kibana/logstash where the logs reside. I'll need to dig into the original WSO2 logs if I can find them to get this question to move along. Biggest question is now below and has to do with finding out what "default" sequence handles formatting and sending the email which is where the error occurs... – Pete Helgren Dec 28 '20 at 18:23

1 Answers1

0

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:','email1@domain.org,email2@domain.org')" 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

  • Thanks. I had found and read through those articles a couple of times but I am not familiar with WSO2 ESB, so without many detailed examples, it was hard to follow. Without knowing the name of the endpoint or the name of the proxy service, I am stuck. The two axis2 services I see in the management console show no activity. How do I log the header value? – Pete Helgren Dec 24 '20 at 17:21