Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    12.0p Mail sending problem, perhaps mail header and content mixup (?)

    Hi Isomorphic,

    I have a super strange issue, where sending mails via your <mail> tags fails.

    This is the exception stack trace (v12.0p_2020-03-11):
    Code:
    javax.mail.internet.AddressException: Illegal semicolon, not in group in string ``Christian &lt;christian.lastname@company.de&gt;'' at position 13
    at javax.mail.internet.InternetAddress.parse(InternetAddress.java:863)
    at javax.mail.internet.InternetAddress.parse(InternetAddress.java:575)
    at javax.mail.internet.InternetAddress.<init>(InternetAddress.java:107)
    at com.isomorphic.mail.MailMessage.buildMessage(MailMessage.java:516)
    at com.isomorphic.mail.TemplatedMailMessage.buildMessage(TemplatedMailMessage.java:260)
    at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:3323)
    at com.lmscompany.lms.server.sendmail.RecurringMailsSender.processMailJob(RecurringMailsSender.java:112)
    at com.lmscompany.lms.server.sendmail.RecurringMailsSender.sendDueMails(RecurringMailsSender.java:50)
    at com.lmscompany.lms.server.sendmail.SendMailProcess.sendMails(SendMailProcess.java:12)
    at com.lmscompany.lms.server.jobs.SendMailJob.execute(SendMailJob.java:54)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
    In the mail html template I have this line:
    Code:
    <td>$!esc.html($lead.STATUS_STATUSCOMMENT)</td>
    The field STATUS_STATUSCOMMENT included user content, and the problem is with this:
    Code:
    Von: otherLN, otherGN <otherGN.otherLN@company.de>
    Gesendet: Montag, 5. Juli 2021 19:15
    An: Vertrieb <vertrieb@company.de>
    Cc: Lastname, Christian <christian.lastname@company.de>
    Betreff: WG: xxx
    
    Hallo Frau xxx,
    ...
    ...
    As you can see the text of the field is a copied mail in German. Instead of "TO:" it has "An". But "CC" is the same in German / English.

    Is it somehow possible that because of the way you try to build the mail in TemplatedMailMessage.java:260 the content is somehow interpreted as header further down the line and this "CC: ..." is not valid? (";" in HTML-encoded content for "<" etc.).

    When I add customSelectExpression="null" in the .ds.xml for the STATUS_STATUSCOMMENT-field, and by this remove the content from the mail, the mail sending succeeds.

    Thank you & Best regards
    Blama

    #2
    Interesting theory, but if true, it should be easy to isolate into a test case where there are not so many other possibilities for the failure. Can you do so?

    Comment


      #3
      Yes, will do so next week.

      Best regards
      Blama

      Comment


        #4
        Out of interest, what does TemplatedMailMessage.java:260 and surrounding code look like?

        Comment


          #5
          Hi Isomorphic,

          I could reproduce in v12.0p_2021-03-31 BuiltInDS SuperDevMode.

          Please edit the "information" field of Elephant in the GUI to the text of #1, then click the "Send mail" button.

          Build path: Add velocity-tools-generic-2.0.jar
          server.properties: Add mailserver config

          BuiltInDS.java:
          Code:
          package com.smartgwt.sample.client;
          
          import com.google.gwt.core.client.EntryPoint;
          import com.smartgwt.client.Version;
          import com.smartgwt.client.core.KeyIdentifier;
          import com.smartgwt.client.data.AdvancedCriteria;
          import com.smartgwt.client.data.DSRequest;
          import com.smartgwt.client.data.DataSource;
          import com.smartgwt.client.types.OperatorId;
          import com.smartgwt.client.util.Page;
          import com.smartgwt.client.util.PageKeyHandler;
          import com.smartgwt.client.util.SC;
          import com.smartgwt.client.widgets.IButton;
          import com.smartgwt.client.widgets.Window;
          import com.smartgwt.client.widgets.events.ClickEvent;
          import com.smartgwt.client.widgets.events.ClickHandler;
          import com.smartgwt.client.widgets.grid.ListGrid;
          import com.smartgwt.client.widgets.layout.VLayout;
          
          public class BuiltInDS implements EntryPoint {
          private VLayout mainLayout;
          private ListGrid animalsGrid;
          private IButton recreateBtn;
          
          public void onModuleLoad() {
          KeyIdentifier debugKey = new KeyIdentifier();
          debugKey.setCtrlKey(true);
          debugKey.setKeyName("D");
          
          Page.registerKey(debugKey, new PageKeyHandler() {
          public void execute(String keyName) {
          SC.showConsole();
          }
          });
          
          mainLayout = new VLayout(20);
          mainLayout.setWidth100();
          mainLayout.setHeight100();
          
          recreateBtn = new IButton("Recreate");
          recreateBtn.addClickHandler(new ClickHandler() {
          @Override
          public void onClick(ClickEvent event) {
          recreate();
          }
          });
          mainLayout.addMember(recreateBtn);
          recreate();
          mainLayout.draw();
          }
          
          private void recreate() {
          Window w = new Window();
          w.setWidth("95%");
          w.setHeight("95%");
          w.setMembersMargin(0);
          w.setModalMaskOpacity(70);
          w.setTitle(" (" + Version.getVersion() + "/" + Version.getSCVersionNumber() + ")");
          w.setTitle("\"outputs\" problem with Criteria" + w.getTitle());
          w.setShowMinimizeButton(false);
          w.setIsModal(true);
          w.setShowModalMask(true);
          w.centerInPage();
          animalsGrid = new ListGrid(DataSource.get("animals"));
          animalsGrid.setCanEdit(true);
          animalsGrid.setAutoFetchData(true);
          animalsGrid.setInitialCriteria(new AdvancedCriteria("commonName", OperatorId.STARTS_WITH, "E"));
          VLayout vL = new VLayout(10);
          
          IButton sendEmailBtn = new IButton("Send email about elephant", new ClickHandler() {
          @Override
          public void onClick(ClickEvent event) {
          DataSource.get("animals").fetchData(new AdvancedCriteria("commonName", OperatorId.EQUALS, "Elephant (African)"), null,
          new DSRequest() {
          {
          setOperationId("mailFetch");
          }
          });
          }
          });
          sendEmailBtn.setWidth(600);
          vL.addMembers(animalsGrid, sendEmailBtn);
          w.addItem(vL);
          w.show();
          }
          }
          animals.ds.xml (fill mail fields):
          Code:
          <DataSource serverConstructor="com.smartgwt.sample.server.listener.MySQLDataSource"
          ID="animals"
          serverType="sql"
          tableName="animals"
          testFileName="animals.data.xml" useAnsiJoins="true"
          >
          <fields>
          <field name="commonName" title="Animal" type="text" />
          <field name="scientificName" title="Scientific Name" type="text" primaryKey="true" required="true" />
          <field name="status" title="Endangered Status" type="text">
          <valueMap>
          <value>Threatened</value>
          <value>Endangered</value>
          <value>Not Endangered</value>
          <value>Not currently listed</value>
          <value>May become threatened</value>
          <value>Protected</value>
          </valueMap>
          </field>
          <field name="diet" title="Diet" type="text" customSQL="true" />
          <field name="information" title="Interesting Facts" type="text" length="1000" escapeHTML="true" />
          <field name="picture" title="Picture" type="image" detail="true"
          imageURLPrefix="/isomorphic/system/reference/inlineExamples/tiles/images/"/>
          <field name="lifeSpan" title="Life Span" type="integer" />
          
          </fields>
          <serverObject lookupStyle="new" className="com.smartgwt.sample.server.listener.Animals" />
          <operationBindings>
          <operationBinding operationType="fetch" operationId="mailFetch" serverMethod="mailFetch"
          progressiveLoading="true">
          <mail contentType="text/html">
          <from>MYADDRESS</from>
          <to>blama@gmx.net</to>
          <bcc>blama@gmx.net</bcc>
          <subject>My test mail</subject>
          <templateFile>mails/testmail.html</templateFile>
          </mail>
          </operationBinding>
          </operationBindings>
          </DataSource>
          war/mails/testmail.html:
          Code:
          <!DOCTYPE html>
          <html>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
          <style type="text/css">
          body {
          font-family: 'Open Sans', Arial, sans-serif;
          font-size: 10pt;
          }
          </style>
          </head>
          <body>
          <table cellspacing="0" cellpadding="0" border="0" width="100%">
          <tr>
          <td>
          <table cellspacing="0" cellpadding="10" border="1">
          <tr>
          <td width="660" colspan="2" style="background-color: #FFFFFF;" border="0">
          Some information about the selected animal:
          </td>
          </tr>
          <tr>
          <td width="160" style="background-color: gray"><b>Animal</b></td>
          <td width="500" style="background-color: white">$!esc.html($commonName)</td>
          </tr>
          <tr>
          <td width="160" style="background-color: gray"><b>Scientific Name</b></td>
          <td width="500" style="background-color: white">$!esc.html($scientificName)</td>
          </tr>
          <tr>
          <td width="160" style="background-color: gray"><b>Endangered Status</b></td>
          <td width="500" style="background-color: white">$!esc.html($status)</td>
          </tr>
          <tr>
          <td width="160" style="background-color: gray"><b>Diet</b></td>
          <td width="500" style="background-color: white">$!esc.html($diet)</td>
          </tr>
          <tr>
          <td width="160" style="background-color: gray"><b>Interesting Facts</b></td>
          <td width="500" style="background-color: white">$!esc.html($information)</td>
          </tr>
          <tr>
          <td width="160" style="background-color: gray"><b>Life Span</b></td>
          <td width="500" style="background-color: white">$!esc.html($lifeSpan)</td>
          </tr>
          </table>
          </td>
          </tr>
          </table>
          $!esc.html($information)
          </body>
          </html>
          Resulting stack trace:
          Code:
          === 2021-07-21 12:10:20,545 [2-87] INFO RequestContext - URL: '/builtinds/sc/IDACall', User-Agent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0': Moz (Gecko) with Accept-Encoding header
          === 2021-07-21 12:10:20,550 [2-87] DEBUG XML - Parsed XML from (in memory stream): 4ms
          === 2021-07-21 12:10:20,552 [2-87] DEBUG RPCManager - Processing 1 requests.
          === 2021-07-21 12:10:20,552 [2-87] DEBUG RPCManager - Request #1 (DSRequest) payload: {
          criteria:{
          fieldName:"commonName",
          operator:"equals",
          value:"Elephant (African)",
          _constructor:"AdvancedCriteria"
          },
          operationConfig:{
          dataSource:"animals",
          repo:null,
          operationType:"fetch",
          textMatchStyle:"exact"
          },
          appID:"builtinApplication",
          operation:"mailFetch",
          oldValues:{
          fieldName:"commonName",
          operator:"equals",
          value:"Elephant (African)",
          _constructor:"AdvancedCriteria"
          }
          }
          === 2021-07-21 12:10:20,552 [2-87] INFO IDACall - Performing 1 operation(s) [UA: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0]
          === 2021-07-21 12:10:20,552 [2-87] INFO DSRequest - Executing animals.fetch[operationId: mailFetch]
          === 2021-07-21 12:10:20,552 [2-87] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
          === 2021-07-21 12:10:20,552 [2-87] DEBUG DeclarativeSecurity - DataSource animals is not in the pre-checked list, processing...
          === 2021-07-21 12:10:20,553 [2-87] INFO DSRequest - Executing animals.fetch[operationId: mailFetch]
          === 2021-07-21 12:10:20,553 [2-87] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
          === 2021-07-21 12:10:20,553 [2-87] DEBUG DeclarativeSecurity - DataSource animals is not in the pre-checked list, processing...
          === 2021-07-21 12:10:20,553 [2-87] DEBUG AppBase - [builtinApplication.mailFetch] No userTypes defined, allowing anyone access to all operations for this application
          === 2021-07-21 12:10:20,553 [2-87] DEBUG AppBase - [builtinApplication.mailFetch] No public zero-argument method named '_mailFetch' found, performing generic datasource operation
          === 2021-07-21 12:10:20,553 [2-87] INFO SQLDataSource - [builtinApplication.mailFetch] Performing fetch operation with
          criteria: {fieldName:"commonName",operator:"equals",value:"Elephant (African)",_constructor:"AdvancedCriteria"} values: {fieldName:"commonName",operator:"equals",value:"Elephant (African)",_constructor:"AdvancedCriteria"}
          === 2021-07-21 12:10:20,553 [2-87] INFO SQLDataSource - [builtinApplication.mailFetch] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
          === 2021-07-21 12:10:20,554 [2-87] INFO SQLDataSource - [builtinApplication.mailFetch] 20: Executing SQL query on 'HSQLDB': SELECT animals.commonName, animals.scientificName, animals.status, animals.information, animals.picture, animals.lifeSpan FROM animals WHERE (animals.commonName = 'Elephant (African)' AND animals.commonName IS NOT NULL)
          === 2021-07-21 12:10:20,554 [2-87] DEBUG SQLConnectionManager - [builtinApplication.mailFetch] Borrowed connection '819445190'
          === 2021-07-21 12:10:20,554 [2-87] INFO SQLDriver - [builtinApplication.mailFetch] Executing SQL query on 'HSQLDB' using connection '819445190': SELECT animals.commonName, animals.scientificName, animals.status, animals.information, animals.picture, animals.lifeSpan FROM animals WHERE (animals.commonName = 'Elephant (African)' AND animals.commonName IS NOT NULL)
          === 2021-07-21 12:10:20,555 [2-87] INFO MailMessage - trying to connect to mail.myserver.net
          === 2021-07-21 12:10:21,009 [2-87] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 20
          === 2021-07-21 12:10:21,009 [2-87] DEBUG SQLDriver - Freeing SQLDriver dbConnection 819445190 for SQLDriver instance 1812667079
          === 2021-07-21 12:10:21,009 [2-87] DEBUG SQLConnectionManager - About to close connection with hashcode "819445190"
          === 2021-07-21 12:10:21,009 [2-87] DEBUG DataSourceDMI - Invocation threw exception
          javax.mail.internet.AddressException: Illegal semicolon, not in group in string ``Christian &lt;christian.lastname@company.de&gt;'' at position 13
          at javax.mail.internet.InternetAddress.parse(InternetAddress.java:863)
          at javax.mail.internet.InternetAddress.parse(InternetAddress.java:575)
          at javax.mail.internet.InternetAddress.<init>(InternetAddress.java:107)
          at com.isomorphic.mail.MailMessage.buildMessage(MailMessage.java:516)
          at com.isomorphic.mail.TemplatedMailMessage.buildMessage(TemplatedMailMessage.java:260)
          at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:3367)
          at com.smartgwt.sample.server.listener.Animals.mailFetch(Animals.java:11)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
          at java.lang.reflect.Method.invoke(Unknown Source)
          at com.isomorphic.base.Reflection._invokeMethod(Reflection.java:580)
          at com.isomorphic.base.Reflection.adaptArgsAndInvoke(Reflection.java:895)
          at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:434)
          at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64)
          at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2874)
          at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:226)
          at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:183)
          at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:148)
          at com.isomorphic.servlet.IDACall._processRequest(IDACall.java:119)
          at com.isomorphic.servlet.IDACall.doPost(IDACall.java:79)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
          at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:175)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
          at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
          at com.isomorphic.servlet.CompressionFilter._doFilter(CompressionFilter.java:260)
          at com.isomorphic.servlet.BaseFilter.doFilter(BaseFilter.java:93)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
          at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
          at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
          at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
          at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
          at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
          at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
          at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
          at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
          at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
          at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
          at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:95)
          at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
          at org.eclipse.jetty.server.Server.handle(Server.java:499)
          at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
          at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
          at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
          at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
          at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
          at java.lang.Thread.run(Unknown Source)
          === 2021-07-21 12:10:21,009 [2-87] WARN RequestContext - dsRequest.execute() failed:
          javax.mail.internet.AddressException: Illegal semicolon, not in group in string ``Christian &lt;christian.lastname@company.de&gt;'' at position 13
          at javax.mail.internet.InternetAddress.parse(InternetAddress.java:863)
          at javax.mail.internet.InternetAddress.parse(InternetAddress.java:575)
          at javax.mail.internet.InternetAddress.<init>(InternetAddress.java:107)
          at com.isomorphic.mail.MailMessage.buildMessage(MailMessage.java:516)
          at com.isomorphic.mail.TemplatedMailMessage.buildMessage(TemplatedMailMessage.java:260)
          at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:3367)
          at com.smartgwt.sample.server.listener.Animals.mailFetch(Animals.java:11)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
          at java.lang.reflect.Method.invoke(Unknown Source)
          at com.isomorphic.base.Reflection._invokeMethod(Reflection.java:580)
          at com.isomorphic.base.Reflection.adaptArgsAndInvoke(Reflection.java:895)
          at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:434)
          at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64)
          at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2874)
          at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:226)
          at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:183)
          at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:148)
          at com.isomorphic.servlet.IDACall._processRequest(IDACall.java:119)
          at com.isomorphic.servlet.IDACall.doPost(IDACall.java:79)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
          at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:175)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
          at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
          at com.isomorphic.servlet.CompressionFilter._doFilter(CompressionFilter.java:260)
          at com.isomorphic.servlet.BaseFilter.doFilter(BaseFilter.java:93)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
          at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
          at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
          at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
          at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
          at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
          at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
          at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
          at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
          at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
          at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
          at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:95)
          at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
          at org.eclipse.jetty.server.Server.handle(Server.java:499)
          at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
          at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
          at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
          at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
          at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
          at java.lang.Thread.run(Unknown Source)
          === 2021-07-21 12:10:21,010 [2-87] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
          === 2021-07-21 12:10:21,010 [2-87] DEBUG RPCManager - non-DMI response, dropExtraFields: false
          === 2021-07-21 12:10:21,010 [2-87] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 20
          === 2021-07-21 12:10:21,010 [2-87] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 20
          === 2021-07-21 12:10:21,010 [2-87] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 20
          === 2021-07-21 12:10:21,010 [2-87] INFO Compression - /builtinds/sc/IDACall: 167 -> 149 bytes
          Best regards
          Blama

          Comment


            #6
            Please, we need you to post your Animals.mailFetch() implementation in order to test your complete test case.

            Regards
            Isomorphic Software

            Comment


              #7
              Isomorphic,

              it is just return request.execute().

              Code:
              package com.smartgwt.sample.server.listener;
              
              import javax.servlet.http.HttpServletRequest;
              
              import com.isomorphic.datasource.DSRequest;
              import com.isomorphic.datasource.DSResponse;
              
              public class Animals {
              
                  public DSResponse mailFetch(DSRequest request, HttpServletRequest servletRequest) throws Exception {
                      return request.execute();
                  }
              }
              Best regards
              Blama
              Last edited by Blama; 23 Jul 2021, 00:27.

              Comment


                #8
                We couldn't reproduce the error with the latest build of 12.0p. Please, try with that.

                Regards
                Isomorphic Software

                Comment


                  #9
                  Hi Isomorphic,

                  also happening with v12.0p_2021-07-06/PowerEdition Deployment for me:
                  Code:
                  === 2021-07-27 12:33:56,600 [main] INFO ISCInit - Isomorphic SmartClient/SmartGWT Framework (v12.0p_2021-07-06/PowerEdition Deployment 2021-07-06) - Initialization Complete
                  Are you sure you changed the text for elephant?
                  This is what my screenshot looks like after clicking the button:
                  Click image for larger version

Name:	Mail issue.png
Views:	176
Size:	94.9 KB
ID:	266029
                  Best regards
                  Blama

                  Comment


                    #10
                    Hi Isomorphic,

                    could you reproduce this one?

                    Thank you & Best regards
                    Blama

                    Comment


                      #11
                      We have applied a fix for this issue which will be available as of tomorrow's builds (Aug 11).

                      Please, let us know if you see any other issues on this part.

                      Regards
                      Isomorphic Software

                      Comment


                        #12
                        Hi Isomorphic,

                        I retested with v12.0p_2021-08-11 and it's working as expected.

                        Out of interest: What was the issue here?

                        Thank you & Best regards
                        Blama

                        Comment


                          #13
                          Similar to what you guessed: content was potentially interpreted as headers due to the use of parse().

                          Comment


                            #14
                            Hi Isomorphic,

                            by chance I found the new method TemplatedMailMessage.getMessageParseMode() in 13.1d. MailMessageParseMode itself is already doc'd in 13.0p.

                            Out of interest: Am I right in thinking that this works similar in previous versions (12.0p, 12.1p), but wasn't configurable?

                            Best regards
                            Blama

                            Comment


                              #15
                              That's basically a backcompat API for people who may have depended on the previous behavior of parsing headers out of body content.

                              Comment

                              Working...
                              X