Programming
   Home >  Programming >  Java > 

SMTP mail Program using Sockets

Here is a program which will send a mail by SMTP server
The program is working and i had tested it many times :)


import java.io.*;
import java.awt.*;
import java.net.*;

public class SendEmailApp
{
	public String sendReminderTo(String host, String email, String to)
	{
		String s, status;
		String server = host;
		String from = email;
		String to = to;
		System.out.println(server + " " + from + " " + to);
		String subject = new String("hi.. ");
		String data = new String("hi...what r u doing man!");
	
		data = data + "\n" + "Nothing special";
		System.out.println(data);
			
		try{
			Socket socket = new Socket(server,25);
			PrintWriter printer = new PrintWriter(socket.getOutputStream(),true);
			BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			s = reader.readLine();
			if(!s.startsWith("220")){
				System.out.println("Error: " + s.substring(4) + "\n");
				printer.println("quit");
				System.out.println("Closing connection.\n");
				return s.substring(4);
			}else{
				System.out.println("Connection made to host.\n");
			}
			printer.println("helo " + server);
			s = reader.readLine();
			if(!s.startsWith("250")){
				System.out.println("Error: " + s.substring(4) + "\n");
				printer.println("quit");
				
				System.out.println("Closing connection.\n");
				return s.substring(4);
			}else{
				System.out.println("Computers introduced properly.\n");
			}

			System.out.println(from);
			printer.println("mail from: " + from);
			
			s = reader.readLine();
			if(!s.startsWith("250")){
				System.out.println("Error: " + s.substring(4) + "\n");
				printer.println("quit");
				System.out.println("Closing connection.\n");
				return s.substring(4);
				
			}else{
				System.out.println("Sender OK.\n");
			}

			printer.println("rcpt to: " + to);
			s = reader.readLine();
			if(!s.startsWith("250")){
				System.out.println("Error: " + s.substring(4) + "\n");
				printer.println("quit");
				System.out.println("Closing connection.\n");
				return s.substring(4);
			}else{
				System.out.println("Recipient OK.\n");
			}
			
			printer.println("data");
			s = reader.readLine();
			if(!s.startsWith("354")){
				System.out.println("Error: " + s.substring(4) + "\n");
				printer.println("quit");
				System.out.println("Closing connection.\n");
				return s.substring(4);
			}else{
				System.out.println("Ready for data transfer.\n");
			}
			printer.println("subject: " + subject);
			printer.println(data);
			printer.println(".");
			System.out.println("Data transfer complete.\n");
			s = reader.readLine();
			System.out.println("after readline");
			
			if(!s.startsWith("250")){
				System.out.println("Error: " + s.substring(4) + "\n");
				printer.println("quit");
				System.out.println("Closing connection.\n");
				return s.substring(4);
			}else{
				System.out.println("Message accepted for delivery.\n");
			}
			
			printer.println("quit");
			s = reader.readLine();
			if(!s.startsWith("221")){
				System.out.println("Error: " + s.substring(4) + "\n");
				printer.println("quit");
				System.out.println("Closing connection.\n");
				return s.substring(4);
			}else{
				System.out.println("Connection closed.\n");
			}
			reader.close();
			printer.close();
			socket.close();
			
		}
		catch(Exception ex)
		{
			System.out.println("Error: " + ex + "\n");
			ex.printStackTrace();
			return "failure";
		}
		return "Success";
	}
}