< prev index next >

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

Print this page

 54             session.sendCommand("354 Enter message now, end with .");
 55             var message = session.readLinesUntil(messageEndPattern);
 56             session.sendCommand("250 MESSAGE OK", quitPattern);
 57 
 58             // Email headers are only 7-bit safe, ensure that we break any high ascii passing through
 59             var inHeader = true;
 60             var mailBody = new StringBuilder();
 61             for (var line : message) {
 62                 if (inHeader) {
 63                     var headerMatcher = headerPattern.matcher(line);
 64                     if (headerMatcher.matches()) {
 65                         var quoteMatcher = encodeQuotedPrintablePattern.matcher(String.join("\n", message));
 66                         var ascii7line = quoteMatcher.replaceAll(mo -> "HIGH_ASCII");
 67                         mailBody.append(ascii7line);
 68                         mailBody.append("\n");
 69                         continue;
 70                     } else {
 71                         inHeader = false;
 72                     }
 73                 }



 74                 mailBody.append(line);
 75                 mailBody.append("\n");
 76             }
 77 
 78             var email = Email.parse(mailBody.toString());
 79             emails.addLast(email);
 80         }
 81 
 82         @Override
 83         public void run() {
 84             while (!serverSocket.isClosed()) {
 85                 try {
 86                     try (var socket = serverSocket.accept();
 87                          var input = new InputStreamReader(socket.getInputStream());
 88                          var output = new OutputStreamWriter(socket.getOutputStream())) {
 89                         var session = new SMTPSession(input, output, Duration.ofMinutes(10));
 90                         handleSession(session);
 91                     }
 92                 } catch (SocketException e) {
 93                     // Socket closed

 54             session.sendCommand("354 Enter message now, end with .");
 55             var message = session.readLinesUntil(messageEndPattern);
 56             session.sendCommand("250 MESSAGE OK", quitPattern);
 57 
 58             // Email headers are only 7-bit safe, ensure that we break any high ascii passing through
 59             var inHeader = true;
 60             var mailBody = new StringBuilder();
 61             for (var line : message) {
 62                 if (inHeader) {
 63                     var headerMatcher = headerPattern.matcher(line);
 64                     if (headerMatcher.matches()) {
 65                         var quoteMatcher = encodeQuotedPrintablePattern.matcher(String.join("\n", message));
 66                         var ascii7line = quoteMatcher.replaceAll(mo -> "HIGH_ASCII");
 67                         mailBody.append(ascii7line);
 68                         mailBody.append("\n");
 69                         continue;
 70                     } else {
 71                         inHeader = false;
 72                     }
 73                 }
 74                 if (line.startsWith(".")) {
 75                     line = line.substring(1);
 76                 }
 77                 mailBody.append(line);
 78                 mailBody.append("\n");
 79             }
 80 
 81             var email = Email.parse(mailBody.toString());
 82             emails.addLast(email);
 83         }
 84 
 85         @Override
 86         public void run() {
 87             while (!serverSocket.isClosed()) {
 88                 try {
 89                     try (var socket = serverSocket.accept();
 90                          var input = new InputStreamReader(socket.getInputStream());
 91                          var output = new OutputStreamWriter(socket.getOutputStream())) {
 92                         var session = new SMTPSession(input, output, Duration.ofMinutes(10));
 93                         handleSession(session);
 94                     }
 95                 } catch (SocketException e) {
 96                     // Socket closed
< prev index next >