Class 2 Intermediate Java 30-IT-397  

e-mail Example

/*
 * MailFrame.java
 *
 * Created on April 30, 2002, 10:51 PM
 */

package mail;

import java.util.Vector;
import javax.swing.JComboBox;

/**
 *
 * @author  default
 */
public class MailFrame extends javax.swing.JFrame {

    EmailSocket esocket;
    EmailMessage message;
    Email email;
 
    /** Creates new form MailFrame */
    public MailFrame(String[] args) {
        initComponents();
 
        // Instantiate attributes.
        esocket = new EmailSocket(args[0], Integer.parseInt(args[1]));
        message = new EmailMessage();
 
        // Give the user a default message.
        txtData.setText("Brandan Jones is the best instructor I've ever had at UC.  This guy is great!");
 
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void initComponents() {
        jScrollPane1 = new javax.swing.JScrollPane();
        txtData = new javax.swing.JTextArea();
        pnlTop = new javax.swing.JPanel();
        lblTo = new javax.swing.JLabel();
        Vector emails = new Vector();
        Email email1 = new Email("Dr. Joseph Steger, President, The University of Cincinnati", "UCInternet2@yahoo.com");
        emails.add(email1);
        Email email2 = new Email("Dr. James Vondrell, Dean, UC CECE", "UCInternet2@yahoo.com");
        emails.add(email2);
        Email email3 = new Email("Ralph Brueggeman, Coordinator, CECE IT", "UCInternet2@yahoo.com");
        emails.add(email3);
        Email email4 = new Email("Brandan Jones, Adjunct Instructor, UC CECE IT", "UCInternet2@yahoo.com");
        emails.add(email4);
        cboTo = new JComboBox(emails);
        lblFrom = new javax.swing.JLabel();
        txtFrom = new javax.swing.JTextField();
        pnlBottom = new javax.swing.JPanel();
        btnSend = new javax.swing.JButton();

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jScrollPane1.setViewportView(txtData);

        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);

        lblTo.setText("To:");
        pnlTop.add(lblTo);

        cboTo.setEditable(true);
        pnlTop.add(cboTo);

        lblFrom.setText("From:");
        pnlTop.add(lblFrom);

        txtFrom.setColumns(15);
        pnlTop.add(txtFrom);

        getContentPane().add(pnlTop, java.awt.BorderLayout.NORTH);

        btnSend.setText("Send");
        btnSend.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSendActionPerformed(evt);
            }
        });

        pnlBottom.add(btnSend);

        getContentPane().add(pnlBottom, java.awt.BorderLayout.SOUTH);

        pack();
    }

    private void btnSendActionPerformed(java.awt.event.ActionEvent evt) {
        // Create the mail message and send it.
        String to = ((Email) cboTo.getSelectedItem()).getAddress();
        message.setTo(to);
        message.setFrom(txtFrom.getText());
        message.setHostName(txtFrom.getText());
        message.setData(txtData.getText());
 
        // Send the mail.
        esocket.connect(message);
    }

    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        new MailFrame(args).show();
    }
 

    // Variables declaration - do not modify
    private javax.swing.JTextArea txtData;
    private javax.swing.JLabel lblTo;
    private javax.swing.JComboBox cboTo;
    private javax.swing.JPanel pnlTop;
    private javax.swing.JLabel lblFrom;
    private javax.swing.JTextField txtFrom;
    private javax.swing.JButton btnSend;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JPanel pnlBottom;
    // End of variables declaration

}
 

/*
 * Email.java
 *
 * Created on April 30, 2002, 10:49 PM
 */

package mail;

/**
 *
 * @author  default
 */
public class Email {

    private String address;
    private String name;
 
    /** Creates a new instance of Email */
    public Email() {
    }
 
    public Email(String name, String address) {
        this.name = name;
        this.address = address;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public void setAddress(String address) {
        this.address = address;
    }
 
    public String getName() {
        return name;
    }
 
    public String getAddress() {
        return address;
    }
 
    public String toString() {
        return name;
    }

}
 

package mail;

/*
 * EmailMessage.java
 *
 * Created on April 30, 2002, 11:55 PM
 */

/**
 *
 * @author  default
 */
public class EmailMessage {

    private String to;
 
    private String from;
 
    private String hostName;
 
    private String data;
 
    /** Creates a new instance of EmailMessage */
    public EmailMessage() {
    }
 
    public void setTo(String to) {
        this.to = to;
    }

    public void setFrom(String from) {
        this.from = from;
    }
 
    public void setHostName(String hostName)  {
        this.hostName = hostName;
    }
 
    public void setData(String data) {
        this.data = data;
    }
 
    public String getData() {
        return data;
    }
 
    public String getHostName() {
        return hostName;
    }
 
    public String getFrom() {
        return from;
    }
 
    public String getTo() {
        return to;
    }
 
 
}
 

/*
 * EmailSocket.java
 *
 * Created on April 29, 2002, 10:56 PM
 */

package mail;

import java.io.*;
import java.net.*;
import java.util.StringTokenizer;

/**
 *
 * @author  default
 */
public class EmailSocket {

    String host = "oz.uc.edu";
    int port = 25;
    PrintWriter out;
    BufferedReader in;
 
    /** Creates a new instance of ClientSocket */
    public EmailSocket() {
    }
 
    public EmailSocket(String host, int port) {
        this.host = host;
        this.port = port;
    }
 
    public void connect(EmailMessage message) {
        StringBuffer result = new StringBuffer();
        try {
            // Create a socket.
            Socket socket = new Socket(host, port);
 
            // Get in and out streams.
 
            out = new PrintWriter(socket.getOutputStream());
 
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            boolean moreData = true;

            receive();
            // send("HELO " + InetAddress.getLocalHost().getHostName());
            // Had to send something else, the above line was returning 'default'.
            send("HELO " + "mail.one.net");
            receive();
            send("MAIL FROM <" + message.getFrom() + ">");
            receive();
            send("RCPT TO: <" + message.getTo() + ">");
            receive();
            send("DATA");
            receive();
            StringTokenizer tokenizer = new StringTokenizer(message.getData(), "\n");
            while(tokenizer.hasMoreTokens()) {
                send(tokenizer.nextToken());
            }
            send(".");
            receive();
 
 
        } catch (IOException e) {
            System.out.println("Error while trying to send e-mail.  Message: " + e.getMessage());
            e.printStackTrace();
        }
    }
 
    public void send(String s) throws IOException {
        s += "\n";
        System.out.println(s);
        out.print(s);
        out.print("\r\n");
        out.flush();
    }
 
    public void receive() {
        try {
            String line = in.readLine();
            if (line != null) {
                System.out.println(line);
            }

        } catch (IOException e) {
            System.out.println("Error while attempting to receive data from the e-mail host.  Message: " + e.getMessage());
        }
    }
 
 
 
 
    public static void main(String args[]) {
 
    }

}
 
 

Created by:  Brandan Jones December 17, 2001