List of usage examples for org.apache.commons.net.smtp AuthenticatingSMTPClient setSender
public boolean setSender(RelayPath path) throws IOException
From source file:ca.rmen.android.networkmonitor.app.email.Emailer.java
/** * Sends an e-mail in UTF-8 encoding.//from w w w .jav a2 s. c om * * @param protocol this has been tested with "TLS", "SSL", and null. * @param attachments optional attachments to include in the mail. * @param debug if true, details about the smtp commands will be logged to stdout. */ static void sendEmail(String protocol, String server, int port, String user, String password, String from, String[] recipients, String subject, String body, Set<File> attachments, boolean debug) throws Exception { // Set up the mail connectivity final AuthenticatingSMTPClient client; if (protocol == null) client = new AuthenticatingSMTPClient(); else client = new AuthenticatingSMTPClient(protocol); if (debug) client.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out), true)); client.setDefaultTimeout(SMTP_TIMEOUT_MS); client.setCharset(Charset.forName(ENCODING)); client.connect(server, port); checkReply(client); client.helo("[" + client.getLocalAddress().getHostAddress() + "]"); checkReply(client); if ("TLS".equals(protocol)) { if (!client.execTLS()) { checkReply(client); throw new RuntimeException("Could not start tls"); } } client.auth(AuthenticatingSMTPClient.AUTH_METHOD.LOGIN, user, password); checkReply(client); // Set up the mail participants client.setSender(from); checkReply(client); for (String recipient : recipients) { client.addRecipient(recipient); checkReply(client); } // Set up the mail content Writer writer = client.sendMessageData(); SimpleSMTPHeader header = new SimpleSMTPHeader(from, recipients[0], subject); for (int i = 1; i < recipients.length; i++) header.addCC(recipients[i]); // Just plain text mail: no attachments if (attachments == null || attachments.isEmpty()) { header.addHeaderField("Content-Type", "text/plain; charset=" + ENCODING); writer.write(header.toString()); writer.write(body); } // Mail with attachments else { String boundary = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 28); header.addHeaderField("Content-Type", "multipart/mixed; boundary=" + boundary); writer.write(header.toString()); // Write the main text message writer.write("--" + boundary + "\n"); writer.write("Content-Type: text/plain; charset=" + ENCODING + "\n\n"); writer.write(body); writer.write("\n"); // Write the attachments appendAttachments(writer, boundary, attachments); writer.write("--" + boundary + "--\n\n"); } writer.close(); if (!client.completePendingCommand()) { throw new RuntimeException("Could not send mail"); } client.logout(); client.disconnect(); }