package org.whsvc.pop.mail;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.Vector;
public class JMail implements Send {
private Socket client = null;
private String from_address = null, account = null, password = null,to_address;
private StringBuffer body = new StringBuffer();
private PrintWriter out = null;
private BufferedReader in = null;
private String date = new Date().toLocaleString();
private String from_name = null, to_name = null, subject = null,
content_Type = "Content-Type: text/plain;charset=\"GB2312\"";
private boolean isAuthLogin = true;
private String serverName = null;
private int port = 25;
public boolean destory() throws Exception {
client.close();
in.close();
out.close();
response("Done");
return true;
}
public JMail(String from_address, String account, String password,
String serverName) {
super();
this.from_address = from_address;
this.account = account;
this.password = password;
this.serverName = serverName;
this.from_name = this.from_address;
}
public JMail() {
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getServerName() {
return serverName;
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
public String getFrom_address() {
return from_address;
}
public void setFrom_address(String from_address) {
this.from_address = from_address;
}
public String getTo_address() {
return to_address;
}
public void setTo_address(String to_address) {
this.to_address = to_address;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void addBody(String content) {
if (isAuthLogin) {
body.append("From: <" + this.from_name + ">\r\n");
body.append("To: <" + this.to_name + ">\r\n");
body.append("Subject: " + this.subject + "\r\n");
body.append(this.content_Type + "\r\n");
body.append("\r\n");
body.append(content + "\r\n");
body.append(".\r\n");
}
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getFrom_name() {
return from_name;
}
public void setFrom_name(String from_name) {
this.from_name = from_name;
}
public String getTo_name() {
return to_name;
}
public void setTo_name(String to_name) {
this.to_name = to_name;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent_Type() {
return content_Type;
}
public void setContent_Type(String content_Type) {
this.content_Type = content_Type;
}
public boolean isAuthLogin() {
return (isAuthLogin != (this.account == null && this.password == null
&& this.from_address == null && this.to_address==null
&& this.serverName == null && this.body.length() > 1));
}
public void send() throws Exception {
if (parse()) {
out.println("QUIT");
}
}
private boolean parse() {
boolean isReady = false;
if (this.account == null && this.password == null
&& this.from_address == null && this.to_address ==null
&& this.serverName == null && this.body.length() > 1) {
isAuthLogin = false;
isReady = false;
return isReady;
}
try {
client = new Socket(this.serverName, this.port);
out = new PrintWriter(client.getOutputStream());
in = new BufferedReader(new InputStreamReader(client
.getInputStream()));
response(in.readLine());
out.println("ehlo MDJ");
out.flush();
response(in.readLine());
out.println("AUTH LOGIN");
out.flush();
response(in.readLine());
response(in.readLine());
response(in.readLine());
response(in.readLine());
out.println(Encode(this.account));
out.flush();
response(in.readLine());
out.println(Encode(this.password));
out.flush();
response(in.readLine());
out.println("mail from: <"+getFrom_address()+">");
out.flush();
response(in.readLine());
out.println("rcpt to: <"+getTo_address()+">");
out.flush();
response(in.readLine());
out.println("data");
out.flush();
response(in.readLine());
/**
* out.print("from: <"+this.from_address+">\n");
* out.print("to: <"+this.from_name+">");
* out.print("Subject: <"+this.from_name+">\n"); out.print("\n\n");
*/
out.println(body.toString());
out.flush();
response(in.readLine());
response(in.readLine());
// out.println("<CRLF>.<CRLF>");
isReady = true;
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return isReady;
}
public void response(String msg) {
System.out.println(msg);
}
public String Encode(String s) {
String old = null;
if (s == "" || s.equals("")) {
old = "";
}
try {
old = new sun.misc.BASE64Encoder().encode(s.getBytes());
} catch (Exception e) {
e.printStackTrace();
}
return old;
}
}
Test.java
package org.whsvc.pop.mail;
import java.util.Date;
public class Test {
/**
* @param args
*/
public static void main(String[] args)
{
JMail mail=new JMail();
mail.setServerName("smtp.163.com");
mail.setDate(new Date().toString());
mail.setAccount("mengdejun_520");
mail.setFrom_address("mengdejun_520@163.com");
mail.setTo_address("280759843@qq.com");
mail.setPassword("*****");
mail.setFrom_name("mengdejun_520@163.com");
mail.setPort(25);
mail.setSubject("test");
mail.setTo_name("mengdejun_168@126.com");
mail.addBody("你好吗?java编程!"+new Date());
try
{
mail.send();
mail.destory();
} catch (Exception e) {
e.printStackTrace();
}
}
}