X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Femail%2FSendmail.java;h=c12523611ac09d9b93565bba01d5bd5568ca123d;hb=d2a1e35d319f56baf28f8e96d7fb2da154b4aa3b;hp=1eb1d914f4750444d0bdf3c47d2d0b66965974fc;hpb=fe57dc31869ee8017262be0971109ac0197ab382;p=gigi.git diff --git a/src/org/cacert/gigi/email/Sendmail.java b/src/org/cacert/gigi/email/Sendmail.java index 1eb1d914..c1252361 100644 --- a/src/org/cacert/gigi/email/Sendmail.java +++ b/src/org/cacert/gigi/email/Sendmail.java @@ -29,22 +29,22 @@ public class Sendmail extends EmailProvider { Socket smtp = new Socket("localhost", 25); PrintWriter out = new PrintWriter(smtp.getOutputStream()); BufferedReader in = new BufferedReader(new InputStreamReader(smtp.getInputStream())); - readResponse(in); + readSMTPResponse(in, 220); out.print("HELO www.cacert.org\r\n"); out.flush(); - readResponse(in); + readSMTPResponse(in, 250); out.print("MAIL FROM:\r\n"); out.flush(); - readResponse(in); + readSMTPResponse(in, 250); bits = to.split(","); for (String user : bits) { out.print("RCPT TO:<" + user.trim() + ">\r\n"); out.flush(); - readResponse(in); + readSMTPResponse(in, 250); } out.print("DATA\r\n"); out.flush(); - readResponse(in); + readSMTPResponse(in, 250); out.print("X-Mailer: CAcert.org Website\r\n"); // if (array_key_exists("REMOTE_ADDR", $_SERVER)) { // out.print("X-OriginatingIP: ".$_SERVER["REMOTE_ADDR"]."\r\n"); @@ -65,7 +65,7 @@ public class Sendmail extends EmailProvider { out.print("To: " + to + "\r\n"); if (NON_ASCII.matcher(subject).matches()) { - out.print("Subject: =?utf-8?B?" + Base64.getEncoder().encodeToString(subject.getBytes()) + "?=\r\n"); + out.print("Subject: =?utf-8?B?" + Base64.getEncoder().encodeToString(subject.getBytes("UTF-8")) + "?=\r\n"); } else { out.print("Subject: " + subject + "\r\n"); } @@ -87,18 +87,23 @@ public class Sendmail extends EmailProvider { smtp.close(); return; } - readResponse(in); + readSMTPResponse(in, 250); out.print("QUIT\n"); out.flush(); - readResponse(in); + readSMTPResponse(in, 221); smtp.close(); } - private static void readResponse(BufferedReader in) throws IOException { + public static boolean readSMTPResponse(BufferedReader in, int code) throws IOException { String line; - while ((line = in.readLine()) != null && line.matches("\\d+-")) { - System.out.println(line); + while ((line = in.readLine()) != null) { + if (line.startsWith(code + " ")) { + return true; + } else if ( !line.startsWith(code + "-")) { + return false; + } } + return false; }