1,bean类
package bean;
import java.io.Serializable;
public class Mymail implements Serializable {
/**
* 发件人密码(授权码)
*/
String password;
/**
* 发件人帐号
*/
String sender;
/**
* 收件人帐号
*/
String receiver;
/**
* 主题
*/
String title;
/**
* 正文
*/
String message;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSender() {
return sender;
}
public void setSender(String sender) {
this.sender = sender;
}
public String getReceiver() {
return receiver;
}
public void setReceiver(String receiver) {
this.receiver = receiver;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
2,发送邮件
package mail;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import org.apache.log4j.Logger;
import bean.Mymail;
import sun.misc.BASE64Encoder;
public class SMTPMain {
public static void main(String[] args) throws ClassNotFoundException {
Mymail mymail = new Mymail();
//发送人账号
mymail.setSender("XXX@163.com");
//这里需要使用邮箱的第三方授权码
mymail.setPassword("XXX");
//收件人账号
mymail.setReceiver("XXX@qq.com");
mymail.setTitle("测试一下");
mymail.setMessage("socket测试正文");
SMTPMain.send(mymail);
}
public static void send(Mymail mymail) {
Logger logger = Logger.getLogger(SMTPMain.class);
logger.warn("");
String password = mymail.getPassword();
String sender = mymail.getSender();
String receiver = mymail.getReceiver();
String title = mymail.getTitle();
String message = mymail.getMessage();
String user = new BASE64Encoder().encode(sender.substring(0, sender.indexOf("@")).getBytes());
String pass = new BASE64Encoder().encode(password.getBytes());
try {
Socket socket = new Socket("smtp.163.com", 25);
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
PrintWriter writter = new PrintWriter(outputStream, true); // 这个true很关键!
logger.warn(reader.readLine());
// HELO
writter.println("HELO first");
// logger.warn(1);
logger.warn(reader.readLine());
// AUTH LOGIN
writter.println("auth login");
// logger.warn(2);
logger.warn(reader.readLine());
writter.println(user);
// logger.warn(3);
logger.warn(reader.readLine());
writter.println(pass);
logger.warn(reader.readLine());
// Above Authentication successful <pre name="code" class="java">
// Set mail from and rcpt to
writter.println("mail from:<" + sender + ">");
logger.warn(reader.readLine());
writter.println("rcpt to:<" + receiver + ">");
logger.warn(reader.readLine());
// Set data
writter.println("data");
logger.warn(reader.readLine());
writter.println("subject:" + title);
writter.println("from:" + sender);
writter.println("to:" + receiver);
writter.println("Content-Type: text/plain;charset=\"utf-8\"");
writter.println();
writter.println(message);
writter.println(".");
writter.println("");
logger.warn(reader.readLine());
// Say GoodBye
writter.println("rset");
logger.warn(reader.readLine());
writter.println("quit");
logger.warn(reader.readLine());
} catch (Exception e) {
// e.printStackTrace();
logger.warn(e.getMessage());
logger.warn("agan");
send(mymail);
}
}
}