import java.io.*; import java.net.*; class EmailClient { public static void main(String argv[]) throws Exception { String smtp_server = "smtp.chapman.edu"; String my_email = "smith237@chapman.edu"; String send_to_address, subject, status; BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); Socket clientSocket = new Socket(smtp_server, 25); DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); String send; System.out.print("Send an email to: "); send_to_address = inFromUser.readLine(); System.out.print("Message Subject: "); subject = inFromUser.readLine(); status = inFromServer.readLine(); if (!status.startsWith("220")) { System.out.println("Error!"); System.out.println(status); clientSocket.close(); System.exit(1); } outToServer.writeBytes("HELO acm.chapman.edu" + '\n'); status = inFromServer.readLine(); if (!status.startsWith("250")) { System.out.println("Error!"); System.out.println(status); clientSocket.close(); System.exit(1); } send = "MAIL FROM: " + my_email + "\n"; outToServer.writeBytes(send); status = inFromServer.readLine(); if (!status.startsWith("250")) { System.out.println("Error!"); System.out.println(status); clientSocket.close(); System.exit(1); } send = "RCPT TO: " + send_to_address + "\n"; System.out.println(send); outToServer.writeBytes(send); status = inFromServer.readLine(); if (!status.startsWith("250")) { System.out.println("Error!"); System.out.println(status); clientSocket.close(); System.exit(1); } outToServer.writeBytes("DATA" + '\n'); status = inFromServer.readLine(); if (!status.startsWith("354")) { System.out.println("Error!"); System.out.println(status); clientSocket.close(); System.exit(1); } send = "Subject: " + subject + "\n\n"; System.out.println(send); outToServer.writeBytes(send); outToServer.writeBytes("Hello, World!\n.\n"); status = inFromServer.readLine(); if (!status.startsWith("250")) { System.out.println("Error!"); System.out.println(status); clientSocket.close(); System.exit(1); } send = "QUIT"+ '\n'; System.out.println(send); outToServer.writeBytes(send); status = inFromServer.readLine(); if (!status.startsWith("221")) { System.out.println("Error!"); System.out.println(status); clientSocket.close(); System.exit(1); } clientSocket.close(); } }