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 replyto, String toname, String fromname, String errorsto, boolean extra) throws IOException;
private static EmailProvider instance;
}
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() {
} 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;
}
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);
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;
}
}
pw.print("MAIL FROM: <returns@cacert.org>\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;
}
}
- 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;
}