Uso libre, expresando explicitamente: "extraido de www.vgvvictor.tk" */
import java.util.*;
import java.io.*;
import java.net.*;
class clienteSMTP{
static Scanner teclado = new Scanner(System.in);
public static void main(String args[])throws UnknownHostException, IOException{
//inicializacion
String servidor_SMTP = args[0];
Socket mi_socket = new Socket(servidor_SMTP, 25); //me creo un socket conectado
Scanner entrada = new Scanner(mi_socket.getInputStream());
PrintWriter salida = new PrintWriter(mi_socket.getOutputStream());
InetAddress mi_host = InetAddress.getLocalHost();
String mi_host_string = mi_host.getHostName();
boolean continuar;
//datos proporcinados por el usuario
String to = "";
String from = "";
String subject;
//empieza la fiesta
continuar = seguimos(entrada);
if (continuar){
salida.print("HELO " + mi_host_string + "\r\n");
salida.flush();
continuar = seguimos(entrada);
}
if (continuar){
System.out.print("Correo origen: ");
from = teclado.nextLine();
salida.print("MAIL From:<" + from + ">\r\n");
salida.flush();
continuar = seguimos(entrada);
}
if (continuar){
System.out.print("Correo destino: ");
to = teclado.nextLine();
salida.print("RCPT To:<" + to + ">\r\n");
salida.flush();
continuar = seguimos(entrada);
}
if (continuar){
salida.print("DATA\r\n");
salida.flush();
continuar = seguimos(entrada);
}
if (continuar){
System.out.print("Asunto: ");
subject = teclado.nextLine();
salida.print("From: " + from + "\r\nTo: " + to + "\r\nSubject: " + subject + "\r\n");
procesador_de_texto(salida);
//salida.print("Hola mundo\r\n.\r\n");PRUEBA
salida.flush();
continuar = seguimos(entrada);
}
if (continuar){
salida.print("QUIT");
salida.flush();
}
}
/*como el teclado.hasNext() no funciona bien si la entrada estandar no esta redireccionada a un fichero,
uso una palabra auxiliar para realizar el envio*/
static void procesador_de_texto (PrintWriter sal){
System.out.println("Escribe tu mensaje:\n(para efectuar el envio, escribe @ENVIAR en una linea nueva)");
String linea_actual = teclado.nextLine();
while (!linea_actual.equals("@ENVIAR")){
//System.out.println(linea_actual + "##");
char A = linea_actual.charAt(0);
if (A == '.'){
linea_actual = '.' + linea_actual;
}
sal.print(linea_actual + "\r\n");
linea_actual = teclado.nextLine();
}
sal.print(".\r\n");
}
static boolean seguimos (Scanner entr){
int codigo = entr.nextInt();
String explicacion = entr.nextLine();
int primera_cifra = codigo/100;
//System.out.println(codigo+explicacion+" "+primera_cifra);
if ((primera_cifra == 2) || (primera_cifra == 3)){
return true;
}else{
System.out.println("ERROR: " + codigo + explicacion + "\nPROGRAMA ABORTADO!");
return false;
}
}
}
No hay comentarios:
Publicar un comentario