📄 receive.java
字号:
package source;
import java.io.*;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.mail.Authenticator;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.MimeUtility;
import org.eclipse.jface.dialogs.MessageDialog;
public class Receive {
private String username;
private String password;
private String host;
private String save_folder;
private boolean flag;
private String riqi;
private DataBase db=new DataBase();
public Receive()
{
getConfig();
riqi=readdata("riqi.mai");
}
public void receive()
{
int message_count;
Authenticator auth = new MyAuthenticator(username,password);
Properties props = new Properties();
Session session = Session.getDefaultInstance(props,auth);
try
{
Store store = session.getStore("pop3");
store.connect(host,username,password);
Folder folder = store.getFolder("INBOX");
if(flag==true) //说明在读完邮件后删除邮件
{
folder.open(Folder.READ_WRITE);//以读写的方式打开
message_count=folder.getMessageCount();
Message[] message = folder.getMessages();
for(int i = 0 ; i<message_count ;i++)
{
if(bodypparse(message[i],save_folder))//保存邮件正文
{
message[i].setFlag(Flags.Flag.DELETED, true);
}
}
MessageDialog.openInformation(null, "系统提示", "收邮件结束!");
folder.close(true);
}
else
{
folder.open(Folder.READ_ONLY);
message_count=folder.getMessageCount();
Message[] message = folder.getMessages();
for(int i = 0 ; i<message_count ;i++)
{
this.bodypparse(message[i], save_folder);
}
MessageDialog.openInformation(null, "系统提示", "收邮件结束!");
folder.close(false);
}
store.close();
}
catch (Exception e)
{
// TODO Auto-generated catch block
MessageDialog.openError(null, "收邮件错误", "收邮件错误,请检查配置!");
}
}
public boolean bodypparse(Message message,String save_folder)throws Exception
{
String title=" ";
String content=" ";
String s_name=" ";
String r_name=" ";
String s_addr=" ";
String r_addr=" ";
String sql="";
int fujian=0;//附件数量
String fujian_name=" ";//附件名字
String fujian_addr=" ";//附件存储地址
String r_time=" ";
String s_time=" ";
int size=0;//邮件大小
Part part;
part=(Part)message;
db.connectToDB();//连接数据库
s_name=message.getFrom()[0].toString();
s_name=MimeUtility.decodeText(s_name);
//JOptionPane.showMessageDialog(null, s_name);
s_addr=message.getFrom()[0].toString();
s_addr=MimeUtility.decodeText(s_addr);
r_addr=message.getRecipients(Message.RecipientType.TO)[0].toString();
r_addr=toGBK(r_addr);
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
Date date=new Date();
r_time=sdf.format(date);
Date s_date=new Date();
if(message.getSentDate()!=null)
{
s_date=message.getSentDate();
s_time=sdf.format(message.getSentDate());
}
title=message.getSubject();
if (part.isMimeType("text/plain") )
{
content=part.getContent().toString();//获得邮件内容
content=toGBK(content);
content=content.replaceAll("'","&&&");
content=content.replaceAll("\"","\\\"");
sql="insert into mail(title,content,s_name,r_name,s_addr,r_addr,s_time,r_time,size,fujian,fujian_name,fujian_addr) " +
" values('"+title+"','"+content+"','"+s_name+"','"+r_name+"','"+s_addr+"','"+r_addr+"','"+s_time+"','"+r_time+"','"+size+"','"+fujian+"','"+fujian_name+"','"+fujian_addr+"')";
//MessageDialog.openInformation(null, "系统提示", "收邮件结束!");
db.executeInsert(sql);
db.close();
return true;
}
else if (part.isMimeType("text/html") )
{
content=part.getContent().toString();//获得邮件内容
content=toGBK(content);
content=content.replaceAll("'","&&&");
content=content.replaceAll("\"","\\\"");
sql="insert into mail(title,content,s_name,r_name,s_addr,r_addr,s_time,r_time,size,fujian,fujian_name,fujian_addr) " +
" values('"+title+"','"+content+"','"+s_name+"','"+r_name+"','"+s_addr+"','"+r_addr+"','"+s_time+"','"+r_time+"','"+size+"','"+fujian+"','"+fujian_name+"','"+fujian_addr+"')";
db.executeInsert(sql);
db.close();
return true;
}
else if (part.isMimeType("multipart/*"))
{
Multipart multipart = (Multipart) part.getContent();
fujian = multipart.getCount();
for (int i=0, n=fujian; i<n; i++)
{
if(multipart.getBodyPart(i).isMimeType("text/html")||multipart.getBodyPart(0).isMimeType("text/plain"))
{
content=multipart.getBodyPart(0).getContent().toString();
content=toUTF(content);
content=content.replaceAll("'","&&&");
content=content.replaceAll("\"","\\\"");
}
Part part2 = multipart.getBodyPart(i);
String disposition = part2.getDisposition();
if ((disposition != null) &&
((disposition.equals(Part.ATTACHMENT) ||
(disposition.equals(Part.INLINE)))))
{
String filenames=part2.getFileName();
size=part2.getSize();
filenames=MimeUtility.decodeText(filenames);//解决编码问题的;
int j=0;
j=filenames.lastIndexOf("\\");
filenames=filenames.substring(j+1);
fujian_name=filenames;
fujian_addr+=saveFile(save_folder+"\\"+fujian_name, part2.getInputStream());
}
}
sql="insert into mail(title,content,s_name,r_name,s_addr,r_addr,s_time,r_time,size,fujian,fujian_name,fujian_addr) " +
" values('"+title+"','"+content+"','"+s_name+"','"+r_name+"','"+s_addr+"','"+r_addr+"','"+s_time+"','"+r_time+"','"+size+"','"+fujian+"','"+fujian_name+"','"+fujian_addr+"')";
db.executeInsert(sql);
db.close();
return true;
}
writedata(s_date);
db.close();
return false;
}
public String saveFile(String filename,InputStream input)
{
try {
File file = new File(filename);
int j=0;
String zhui,qian;
j=filename.lastIndexOf(".");
qian=filename.substring(0,j);
zhui=filename.substring(j);
String qian2="";
for (int i=1; file.exists(); i++)
{
qian2=qian+"("+i+")";
filename=qian2+zhui;
file = new File(filename);
}
FileOutputStream output=new FileOutputStream(filename);
byte[] b=new byte[1024];
int len;
while((len=input.read(b))!=-1)
{
output.write(b,0,len);
}
output.close();
return filename;
} catch (IOException e) {
MessageDialog.openError(null, "收邮件错误", "附件保存失败!");
e.printStackTrace();
return filename;
}
}
public String toGBK(String str)
throws java.io.UnsupportedEncodingException
{
return new String(str.getBytes("ISO-8859-1"),"GBK");
}
public String toUTF(String str)
throws java.io.UnsupportedEncodingException
{
return new String(str.getBytes("UTF-8"),"UTF-8");
}
public String toGB2312(String str)
throws java.io.UnsupportedEncodingException
{
return new String(str.getBytes("ISO-8859-1"),"UTF-8");
}
public void writedata(Date date)
{
try
{
PrintWriter out = new PrintWriter(new FileWriter("riqi.mai"));
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
String datestr=sdf.format(date);
out.println(""+datestr);
out.close();
}
catch(IOException e0)
{
MessageDialog.openError(null, "收邮件错误", "读取数据错误!");
}
}
public String readdata(String filename)
{
BufferedReader in;
String s="";
try
{
in=new BufferedReader(new FileReader(filename));
if((s=in.readLine())!=null)
{
return s;
}
in.close();
return s;
}
catch(Exception e)
{
e.printStackTrace();
MessageDialog.openError(null, "收邮件错误", "读取数据错误!");
return s;
}
}
private void getConfig()
{
try
{
DataBase db=new DataBase();
db.connectToDB();
ResultSet rs=null;
String sql;
sql="select * from config where id=1";
rs=db.executeQuery(sql);
if(!rs.next())
{
MessageDialog.openError(null, "收邮件错误", "读取配置错误!");
System.exit(0);
}
username=rs.getString("username");
password=rs.getString("password");
host=rs.getString("pop3");
save_folder=rs.getString("save_folder");
flag=rs.getBoolean("delete");
db.close();
}
catch(Exception mex)
{
MessageDialog.openError(null, "收邮件错误", "读取配置错误!");
mex.printStackTrace();
System.exit(0);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -