package context.arch.util; import java.net.Socket; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.BufferedWriter; import java.io.OutputStreamWriter; import java.io.IOException; /** * This class contacts a machine's POP port and uses it to send an email * message. */ public class SendMail { /** * Basic empty constructor */ public SendMail() { } /** * This method sends an email message. * * @param sendAddress The address of the machine requesting the send * @param mailServer The machine to contact to use for sending the message * @param sender The email addres of the sending person * @param recipient The email address of the person the message is being sent to * @param subject The subject of the email message * @param message The actual content of the mail message to send */ public void sendMail(String sendAddress, String mailServer, String sender, String recipient, String subject, String message) { try { Socket mailsocket = new Socket(mailServer, 25); BufferedReader read = new BufferedReader (new InputStreamReader(mailsocket.getInputStream(), "8859_1")); // 8859_1 character encoding BufferedWriter write = new BufferedWriter (new OutputStreamWriter(mailsocket.getOutputStream(), "8859_1")); // start conversation with mailserver send(read, write, "HELO "+sendAddress); send(read, write, "MAIL FROM: <"+sender+">"); send(read, write, "RCPT TO: " + recipient); send(read, write, "DATA"); send(write, "Subject: "+subject); send(write, "From: Your Name <"+sender+">"); send(write, "\n"); // send message send(write, message); send(write, ".\n"); send(read, write, "QUIT"); mailsocket.close(); } catch (IOException ioe) { System.out.println("error: "+ioe); } } /** * This method writes data to a BufferedWriter and reads the * response in a BufferedReader. * * @param in BufferedReader to read the response from * @param out BufferedWriter to write data to * @param s The data to write out */ public void send(BufferedReader in, BufferedWriter out, String s) { try { out.write(s + "\n"); out.flush(); s = in.readLine(); } catch (IOException ioe) { System.out.println("error: "+ioe); } } /** * This method writes data to a BufferedWriter. * * @param out BufferedWriter to write data to * @param s The data to write out */ public void send(BufferedWriter out, String s) { try { out.write(s + "\n"); out.flush(); } catch (IOException ioe) { System.out.println("error: "+ioe); } } /** * Simple main method that creates the SendMail class and * sends a mail using parameters from the command line */ public static void main(String args[]) { SendMail mail = new SendMail(); mail.sendMail(args[0], args[1], args[2], args[3], args[4], args[5]); } }