X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Femail%2FSendmail.java;h=008f3c69be986aec9dcc4f36d05cb0b80f04df40;hb=8d98e8c550a5fc426d7efbd57436dcb61bd41243;hp=601130500e96719c1fe913db1b61f7240a5dd94d;hpb=446d3aa82c177eb844f6f19c8f85d4a6e631efe7;p=gigi.git diff --git a/src/org/cacert/gigi/email/Sendmail.java b/src/org/cacert/gigi/email/Sendmail.java index 60113050..008f3c69 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"); @@ -52,8 +52,10 @@ public class Sendmail extends EmailProvider { // TODO SimpleDateFormat emailDate = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss ZZZZ (z)", Locale.ENGLISH); out.print("Date: " + emailDate.format(new Date(System.currentTimeMillis())) + "\r\n"); - out.print("Sender: " + errorsto + "\r\n"); - out.print("Errors-To: " + errorsto + "\r\n"); + if (errorsto != null) { + out.print("Sender: " + errorsto + "\r\n"); + out.print("Errors-To: " + errorsto + "\r\n"); + } if (replyto != null) { out.print("Reply-To: " + replyto + "\r\n"); } else { @@ -85,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; }