X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;ds=sidebyside;f=src%2Forg%2Fcacert%2Fgigi%2Femail%2FEmailProvider.java;h=ed61aeca2f6cf3ddab0c35f43c7a1e25ebb04031;hb=9531b0af1a9545017db7d5a4ba6ae65f6a9cfcdb;hp=ff9fde7a919f9b63adacb0ab5a56412bf295073b;hpb=7c8c31300b338ce8a19fab549c5b4dd8fa58f49e;p=gigi.git diff --git a/src/org/cacert/gigi/email/EmailProvider.java b/src/org/cacert/gigi/email/EmailProvider.java index ff9fde7a..ed61aeca 100644 --- a/src/org/cacert/gigi/email/EmailProvider.java +++ b/src/org/cacert/gigi/email/EmailProvider.java @@ -20,13 +20,12 @@ import javax.naming.NamingException; import javax.net.ssl.SSLSocketFactory; import org.cacert.gigi.crypto.SMIME; -import org.cacert.gigi.database.DatabaseConnection; import org.cacert.gigi.database.GigiPreparedStatement; import org.cacert.gigi.util.DNSUtil; public abstract class EmailProvider { - public abstract void sendmail(String to, String subject, String message, String from, String replyto, String toname, String fromname, String errorsto, boolean extra) throws IOException; + public abstract void sendMail(String to, String subject, String message, String from, String replyto, String toname, String fromname, String errorsto, boolean extra) throws IOException; private static EmailProvider instance; @@ -40,7 +39,13 @@ public abstract class EmailProvider { } protected final void sendSigned(String contents, PrintWriter output) throws IOException, GeneralSecurityException { - SMIME.smime(contents, k, c, output); + if (k == null || c == null) { + output.println("Content-Transfer-Encoding: base64"); + output.println(); + output.print(contents); + } else { + SMIME.smime(contents, k, c, output); + } } public static EmailProvider getInstance() { @@ -88,12 +93,13 @@ public abstract class EmailProvider { } else { return "Strange MX records."; } - try (Socket s = new Socket(host, 25); BufferedReader br0 = new BufferedReader(new InputStreamReader(s.getInputStream(), "UTF-8"));// + try (Socket s = new Socket(host, 25); + BufferedReader br0 = new BufferedReader(new InputStreamReader(s.getInputStream(), "UTF-8"));// PrintWriter pw0 = new PrintWriter(new OutputStreamWriter(s.getOutputStream(), "UTF-8"))) { BufferedReader br = br0; PrintWriter pw = pw0; String line; - if ( !Sendmail.readSMTPResponse(br, 220)) { + if ( !SendMail.readSMTPResponse(br, 220)) { continue; } @@ -114,7 +120,7 @@ public abstract class EmailProvider { if (starttls) { pw.print("STARTTLS\r\n"); pw.flush(); - if ( !Sendmail.readSMTPResponse(br, 220)) { + if ( !SendMail.readSMTPResponse(br, 220)) { continue; } Socket s1 = ((SSLSocketFactory) SSLSocketFactory.getDefault()).createSocket(s, host, 25, true); @@ -122,7 +128,7 @@ public abstract class EmailProvider { pw = new PrintWriter(new OutputStreamWriter(s1.getOutputStream(), "UTF-8")); pw.print("EHLO www.cacert.org\r\n"); pw.flush(); - if ( !Sendmail.readSMTPResponse(br, 250)) { + if ( !SendMail.readSMTPResponse(br, 250)) { continue; } } @@ -130,27 +136,28 @@ public abstract class EmailProvider { pw.print("MAIL FROM: \r\n"); pw.flush(); - if ( !Sendmail.readSMTPResponse(br, 250)) { + if ( !SendMail.readSMTPResponse(br, 250)) { continue; } pw.print("RCPT TO: <" + address + ">\r\n"); pw.flush(); - if ( !Sendmail.readSMTPResponse(br, 250)) { + if ( !SendMail.readSMTPResponse(br, 250)) { continue; } pw.print("QUIT\r\n"); pw.flush(); - if ( !Sendmail.readSMTPResponse(br, 221)) { + if ( !SendMail.readSMTPResponse(br, 221)) { continue; } - GigiPreparedStatement statmt = DatabaseConnection.getInstance().prepare("INSERT INTO `emailPinglog` SET `when`=NOW(), `email`=?, `result`=?, `uid`=?, `type`='fast', `status`=?::`pingState`"); - statmt.setString(1, address); - statmt.setString(2, line); - statmt.setInt(3, forUid); - statmt.setString(4, "success"); - statmt.execute(); + try (GigiPreparedStatement statmt = new GigiPreparedStatement("INSERT INTO `emailPinglog` SET `when`=NOW(), `email`=?, `result`=?, `uid`=?, `type`='fast', `status`=?::`pingState`")) { + statmt.setString(1, address); + statmt.setString(2, line); + statmt.setInt(3, forUid); + statmt.setString(4, "success"); + statmt.execute(); + } if (line == null || !line.startsWith("250")) { return line; @@ -161,12 +168,13 @@ public abstract class EmailProvider { } } - GigiPreparedStatement statmt = DatabaseConnection.getInstance().prepare("INSERT INTO `emailPinglog` SET `when`=NOW(), `email`=?, `result`=?, `uid`=?, `type`='fast', `status`=?::`pingState`"); - statmt.setString(1, address); - statmt.setString(2, "Failed to make a connection to the mail server"); - statmt.setInt(3, forUid); - statmt.setString(4, "failed"); - statmt.execute(); + try (GigiPreparedStatement statmt = new GigiPreparedStatement("INSERT INTO `emailPinglog` SET `when`=NOW(), `email`=?, `result`=?, `uid`=?, `type`='fast', `status`=?::`pingState`")) { + statmt.setString(1, address); + statmt.setString(2, "Failed to make a connection to the mail server"); + statmt.setInt(3, forUid); + statmt.setString(4, "failed"); + statmt.execute(); + } return FAIL; }