package com.wepull.smtp;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class Transmit extends Thread {
private Socket s;
private BufferedReader br;
private PrintStream ps;
private int count = 0;
private String address;
public Transmit(Socket s, String address) {
this.address = address;
this.s = s;
try {
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
ps = new PrintStream(s.getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void run() {
String line = "";
while (!s.isClosed()) {
try {
line = br.readLine();
System.out.println("服务器:"+line);
doAction(line);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private void doAction(String line) {
String msg = line.substring(0, 3);
if ("220".equalsIgnoreCase(msg)) {
ps.println("helo 192.168.0.101");
} else if ("250".equalsIgnoreCase(msg)&&count==0) {
ps.println("MAIL FROM: <smtp@chunhua.com>");
count++;
} else if ("250".equalsIgnoreCase(msg) && count == 1) {
ps.println("RCPT to: <" + address + ">");
count++;
} else if ("354".equalsIgnoreCase(msg)) {
dosend();
} else if ("250".equalsIgnoreCase(msg) && count == 2) {
ps.println("data");
count++;
}else if ("250".equalsIgnoreCase(msg) && count == 3) {
//System.out.println(count);
ps.println("quit");
count++;
} else if ("221".equalsIgnoreCase(msg)) {
try {
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private void dosend() {
FileInputStream fis = null;
try {
fis = new FileInputStream(Common.PATH);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedReader brsendfile = new BufferedReader(new InputStreamReader(
fis));
String line = "";
while (true) {
try {
line = brsendfile.readLine();
ps.println(line);
if (".".equalsIgnoreCase(line)) {
break;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}