我要讲啥?没什么好讲的,直接上代码!
Base64加密使用了Apache的开源包,使用时需导入commons-codec-1.11.jar包
另外,要说一下的就是国内的邮件服务器很多并没有用25端口和110端口接收和发送邮件,一般SMTP端口为465或587,而POP3端口为995,还有,现在的邮箱一般采用SSL加密,必须用SSL套接字建立连接,还有就是,第三方登陆邮箱用的是授权码而不是密码,其中SMTP是经过Base64编码后的授权码,POP3则直接是授权码......,借用代码记得删除package标记,另外还请保留署名,我可是有版权的!谢谢!好了,大概就这么多......
哦对了,先贴几个基础知识贴:
邮件实现详解(二)------手工体验smtp和pop3协议
package com.example;
import java.io.BufferedReader;
import java.io.OutputStream;
import java.net.Socket;
public class TransportModel {
// 换行符
protected final static String CRLF = "\r\n";
// 用户名
protected String Username = null;
// 密码:授权码
protected String Password = null;
// iSocket套接字
protected Socket iSocket = null;
// 输入流
protected BufferedReader bufferedReader = null;
// 输出流
protected OutputStream outputStream = null;
// 是否已登陆
protected boolean isConnected = false;
public String getUsername() {
return Username;
}
public void setUsername(String username) {
Username = username;
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
Password = password;
}
}
package com.example;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.net.ssl.SSLSocketFactory;;
/**
*
* @author KING-ERIC
*
*/
public class POP3Recv extends TransportModel {
// 邮件服务器域名地址
private String POP3Host = null;
// 邮件服务器端口,正常是110,腾讯SSL加密是995
private int POP3Port;
// 私有构造函数
private POP3Recv() {
}
// 静态内部类,在该内部类中创建单例对象,再将该单例对象通过getInstance()方法返回给外部使用
private static class InternalClass {
private final static POP3Recv POP3Recv = new POP3Recv();
}
// 公有静态成员方法,返回唯一实例
public static synchronized POP3Recv getPOP3Recv() {
return InternalClass.POP3Recv;
}
// 公有静态成员方法,返回唯一实例
public static synchronized POP3Recv getPOP3Recv(String Host, int Port) {
InternalClass.POP3Recv.POP3Host = Host;
InternalClass.POP3Recv.POP3Port = Port;
return InternalClass.POP3Recv;
}
public String getPOP3Host() {
return POP3Host;
}
public void setPOP3Host(String pOP3Host) {
POP3Host = pOP3Host;
}
public int getPOP3Port() {
return POP3Port;
}
public void setPOP3Port(int pOP3Port) {
POP3Port = pOP3Port;
}
public String getUsername() {
return Username;
}
public void setUsername(String username) {
Username = username;
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
Password = password;
}
public synchronized boolean Login() {
if (POP3Host == null || POP3Port == 0 || Username == null || Password == null) {
try {
throw new Exception("数据未初始化...");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return isConnected;
}
}
if (!isConnected) {
try {
if (POP3Port == 110)
iSocket = new Socket(POP3Host, POP3Port);
else
iSocket = SSLSocketFactory.getDefault().createSocket(POP3Host, POP3Port);
outputStream = iSocket.getOutputStream();
bufferedReader = new BufferedReader(new InputStreamReader(iSocket.getInputStream()));
GetResponse();
System.out.println("<------- 登陆 ------->");
Send("USER " + Username + CRLF);
GetResponse();
Send("PASS " + Password + CRL