This program shows how to use sockets to send plain text mail messages. : Socket « Network Protocol « Java

Home
Java
1.2D Graphics GUI
2.3D
3.Advanced Graphics
4.Ant
5.Apache Common
6.Chart
7.Class
8.Collections Data Structure
9.Data Type
10.Database SQL JDBC
11.Design Pattern
12.Development Class
13.EJB3
14.Email
15.Event
16.File Input Output
17.Game
18.Generics
19.GWT
20.Hibernate
21.I18N
22.J2EE
23.J2ME
24.JDK 6
25.JNDI LDAP
26.JPA
27.JSP
28.JSTL
29.Language Basics
30.Network Protocol
31.PDF RTF
32.Reflection
33.Regular Expressions
34.Scripting
35.Security
36.Servlets
37.Spring
38.Swing Components
39.Swing JFC
40.SWT JFace Eclipse
41.Threads
42.Tiny Application
43.Velocity
44.Web Services SOA
45.XML
Java Tutorial
Java Book
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
SCJP
Java » Network Protocol » SocketScreenshots 
This program shows how to use sockets to send plain text mail messages.
 
/*
   This program is a part of the companion code for Core Java 8th ed.
   (http://horstmann.com/corejava)

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingWorker;

/**
 * This program shows how to use sockets to send plain text mail messages.
 @author Cay Horstmann
 @version 1.11 2007-06-25
 */
public class MailTest
{
   public static void main(String[] args)
   {
      EventQueue.invokeLater(new Runnable()
         {
            public void run()
            {
               JFrame frame = new MailTestFrame();
               frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
               frame.setVisible(true);
            }
         });
   }
}

/**
 * The frame for the mail GUI.
 */
class MailTestFrame extends JFrame
{
   public MailTestFrame()
   {
      setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
      setTitle("MailTest");

      setLayout(new GridBagLayout());

      // we use the GBC convenience class of Core Java Volume 1 Chapter 9
      add(new JLabel("From:")new GBC(00).setFill(GBC.HORIZONTAL));

      from new JTextField(20);
      add(from, new GBC(10).setFill(GBC.HORIZONTAL).setWeight(1000));

      add(new JLabel("To:")new GBC(01).setFill(GBC.HORIZONTAL));

      to = new JTextField(20);
      add(to, new GBC(11).setFill(GBC.HORIZONTAL).setWeight(1000));

      add(new JLabel("SMTP server:")new GBC(02).setFill(GBC.HORIZONTAL));

      smtpServer = new JTextField(20);
      add(smtpServer, new GBC(12).setFill(GBC.HORIZONTAL).setWeight(1000));

      message = new JTextArea();
      add(new JScrollPane(message)new GBC(0321).setFill(GBC.BOTH).setWeight(100100));

      comm = new JTextArea();
      add(new JScrollPane(comm)new GBC(0421).setFill(GBC.BOTH).setWeight(100100));

      JPanel buttonPanel = new JPanel();
      add(buttonPanel, new GBC(0521));

      JButton sendButton = new JButton("Send");
      buttonPanel.add(sendButton);
      sendButton.addActionListener(new ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               new SwingWorker<Void, Void>()
               {
                  protected Void doInBackground() throws Exception
                  {
                     comm.setText("");
                     sendMail();
                     return null;
                  }
               }.execute();
            }
         });
   }

   /**
    * Sends the mail message that has been authored in the GUI.
    */
   public void sendMail()
   {
      try
      {
         Socket s = new Socket(smtpServer.getText()25);

         InputStream inStream = s.getInputStream();
         OutputStream outStream = s.getOutputStream();

         in = new Scanner(inStream);
         out = new PrintWriter(outStream, true /* autoFlush */);

         String hostName = InetAddress.getLocalHost().getHostName();

         receive();
         send("HELO " + hostName);
         receive();
         send("MAIL FROM: <" from.getText() ">");
         receive();
         send("RCPT TO: <" + to.getText() ">");
         receive();
         send("DATA");
         receive();
         send(message.getText());
         send(".");
         receive();
         s.close();
      }
      catch (IOException e)
      {
         comm.append("Error: " + e);
      }
   }

   /**
    * Sends a string to the socket and echoes it in the comm text area.
    @param s the string to send.
    */
   public void send(String sthrows IOException
   {
      comm.append(s);
      comm.append("\n");
      out.print(s.replaceAll("\n""\r\n"));
      out.print("\r\n");
      out.flush();
   }

   /**
    * Receives a string from the socket and displays it in the comm text area.
    */
   public void receive() throws IOException
   {
      String line = in.nextLine();
      comm.append(line);
      comm.append("\n");
   }

   private Scanner in;
   private PrintWriter out;
   private JTextField from;
   private JTextField to;
   private JTextField smtpServer;
   private JTextArea message;
   private JTextArea comm;

   public static final int DEFAULT_WIDTH = 300;
   public static final int DEFAULT_HEIGHT = 300;
}

/*
This program is a part of the companion code for Core Java 8th ed.
(http://horstmann.com/corejava)

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

/*
GBC - A convenience class to tame the GridBagLayout

Copyright (C) 2002 Cay S. Horstmann (http://horstmann.com)

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/


/**
This class simplifies the use of the GridBagConstraints
class.
*/
class GBC extends GridBagConstraints 
{
/**
   Constructs a GBC with a given gridx and gridy position and
   all other grid bag constraint values set to the default.
   @param gridx the gridx position
   @param gridy the gridy position
*/
public GBC(int gridx, int gridy)
{
   this.gridx = gridx;
   this.gridy = gridy;
}

/**
   Constructs a GBC with given gridx, gridy, gridwidth, gridheight
   and all other grid bag constraint values set to the default.
   @param gridx the gridx position
   @param gridy the gridy position
   @param gridwidth the cell span in x-direction
   @param gridheight the cell span in y-direction
*/
public GBC(int gridx, int gridy, int gridwidth, int gridheight)
{
   this.gridx = gridx;
   this.gridy = gridy;
   this.gridwidth = gridwidth; 
   this.gridheight = gridheight; 
}

/**
   Sets the anchor.
   @param anchor the anchor value
   @return this object for further modification
*/
public GBC setAnchor(int anchor

   this.anchor = anchor; 
   return this;
}

/**
   Sets the fill direction.
   @param fill the fill direction
   @return this object for further modification
*/
public GBC setFill(int fill

   this.fill = fill; 
   return this;
}

/**
   Sets the cell weights.
   @param weightx the cell weight in x-direction
   @param weighty the cell weight in y-direction
   @return this object for further modification
*/
public GBC setWeight(double weightx, double weighty

   this.weightx = weightx; 
   this.weighty = weighty; 
   return this;
}

/**
   Sets the insets of this cell.
   @param distance the spacing to use in all directions
   @return this object for further modification
*/
public GBC setInsets(int distance

   this.insets = new Insets(distance, distance, distance, distance);
   return this;
}

/**
   Sets the insets of this cell.
   @param top the spacing to use on top
   @param left the spacing to use to the left
   @param bottom the spacing to use on the bottom
   @param right the spacing to use to the right
   @return this object for further modification
*/
public GBC setInsets(int top, int left, int bottom, int right

   this.insets = new Insets(top, left, bottom, right);
   return this;
}

/**
   Sets the internal padding
   @param ipadx the internal padding in x-direction
   @param ipady the internal padding in y-direction
   @return this object for further modification
*/
public GBC setIpad(int ipadx, int ipady

   this.ipadx = ipadx; 
   this.ipady = ipady; 
   return this;
}
}

   
  
Related examples in the same category
1.Create a socket without a timeout
2.Create a socket with a timeout
3.Demonstrate Sockets.
4.Socket connection and concurrent package
5.XML based message
6.ObjectInputStream and ObjectOutputStream from Socket
7.ServerSocket and Socket for Serializable object
8.String based communication between Socket
9.Get email with Socket
10.Create PrintWriter from BufferedWriter, OutputStreamWriter and Socket
11.Read from server
12.Use Socket to read and write stream
13.Connects to a server at a specified host and port. It reads text from the console and sends it to the server
14.A simple network client that establishes a network connection to a specified port on a specified host, send an optional message across the connection
15.Reading Text from a Socket
16.Writing Text to a Socket
17.Sending a POST Request Using a Socket
18.Get the Date from server
19.Transfer a file via Socket
20.Ping a server
21.Read and write through socket
22.Read float number from a Socket
23.Read Object from Socket
24.deleting messages from a POP3 mailbox based on message size and Subject line
25.A timeout feature on socket connections
26.Write Objects From Socket
27.Write Double Using Sockets
28.Download WWW Page
29.Redirects incoming TCP connections to other hosts/ports
30.Socket Fetcher
31.Socket Address Encoder
32.Zip socket
33.This program shows how to interrupt a socket channel.
34.Makes a socket connection to the atomic clock in Boulder, Colorado, and prints the time that the server sends.
ww___w___._ja___va_2__s.co__m__ | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.