< prev index next >

test/src/main/java/org/openjdk/skara/test/SMTPServer.java

Print this page
@@ -40,21 +40,27 @@
      private static Pattern rcptToPattern = Pattern.compile("^RCPT TO:<.*$");
      private static Pattern dataPattern = Pattern.compile("^DATA$");
      private static Pattern messageEndPattern = Pattern.compile("^\\.$");
      private static Pattern quitPattern = Pattern.compile("^QUIT$");
  
+     private final static Pattern encodeQuotedPrintablePattern = Pattern.compile("([^\\x00-\\x7f]+)");
+ 
      private class AcceptThread implements Runnable {
          private void handleSession(SMTPSession session) throws IOException {
              session.sendCommand("220 localhost SMTP", ehloPattern);
              session.sendCommand("250 HELP", mailFromPattern);
              session.sendCommand("250 FROM OK", rcptToPattern);
              session.sendCommand("250 RCPT OK", dataPattern);
              session.sendCommand("354 Enter message now, end with .");
              var message = session.readLinesUntil(messageEndPattern);
              session.sendCommand("250 MESSAGE OK", quitPattern);
  
-             var email = Email.parse(String.join("\n", message));
+             // SMTP is only 7-bit safe, ensure that we break any high ascii passing through here
+             var quoteMatcher = encodeQuotedPrintablePattern.matcher(String.join("\n", message));
+             var ascii7message = quoteMatcher.replaceAll(mo -> "HIGH_ASCII");
+ 
+             var email = Email.parse(ascii7message);
              emails.addLast(email);
          }
  
          @Override
          public void run() {
< prev index next >