Explain Simple Mail Transfer Protocol

Explain Simple Mail Transfer Protocol


  • 18 Feb, 2012

    Write an SMTP (simple mail transfer protocol) client -- one so simple that we have all the data encapsulated within the program. You may change the code around to suit your needs. An interesting modification would be to change it so that you accept the data from the command-line argument and also get the input (the body of the message) from standard input. Try to modify it so that it behaves the same as the mail program that comes with Unix.import java.io.*;import java.net.*;public class smtpClient {public static void main(String[] args) {// declaration section:// smtpClient: our client socket// os: output stream// is: input streamSocket smtpSocket = null;DataOutputStream os = null;DataInputStream is = null;// Initialization section:// Try to open a socket on port 25// Try to open input and output streamstry {smtpSocket = new Socket("hostname", 25);os = new DataOutputStream(smtpSocket.getOutputStream());is = new DataInputStream(smtpSocket.getInputStream());} catch (UnknownHostException e) {System.err.println("Don't know about host: hostname");} catch (IOException e) {System.err.println("Couldn't get I/O for the connection to: hostname");}// If everything has been initialized then we want to write some data// to the socket we have opened a connection to on port 25if (smtpSocket != null && os != null && is != null) {try {// The capital string before each colon has a special meaning to SMTP// you may want to read the SMTP specification, RFC1822/3os.writeBytes("HELOn");os.writeBytes("MAIL From: k3is@fundy.csd.unbsj.can");os.writeBytes("RCPT To: k3is@fundy.csd.unbsj.can");os.writeBytes("DATAn");os.writeBytes("From: k3is@fundy.csd.unbsj.can");os.writeBytes("Subject: testingn");os.writeBytes("Hi theren"); // message bodyos.writeBytes("n.n");os.writeBytes("QUIT");// keep on reading from/to the socket till we receive the "Ok" from SMTP,// once we received that then we want to break.String responseLine;while ((responseLine = is.readLine()) != null) {System.out.println("Server: " + responseLine);if (responseLine.indexOf("Ok") != -1) {break;}}// clean up:// close the output stream// close the input stream// close the socketos.close();is.close();smtpSocket.close();} catch (UnknownHostException e) {System.err.println("Trying to connect to unknown host: " + e);} catch (IOException e) {System.err.println("IOException: " + e);}}}}When programming a client, you must follow these four steps:* Open a socket.* Open an input and output stream to the socket.* Read from and write to the socket according to the server's protocol.* Clean up.These steps are pretty much the same for all clients. The only step that varies is step three, since it depends on the server you are talking to.

    Comments Received:
    Please give your suggestions and feedback:

2009-2016 downloadmela.com. All rights reserved.