< prev index next > test/src/main/java/org/openjdk/skara/test/SMTPServer.java
Print this page
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 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));
emails.addLast(email);
}
@Override
public void run() {
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);
! // 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 >