📄 receivemail.java
字号:
package com.comingnet.bean;
import com.comingnet.tool.Convert;
import com.comingnet.tool.ConvertDate;
import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.Folder;
import javax.mail.internet.*;
import javax.mail.search.*;
import com.db.*;
import java.sql.*;
public class ReceiveMail {
private String strcontenttype;
private java.util.Date myDate;
private String straddr;
private String sendaddr;
private String recieveaddr;
private String ccstr;
private String subjectstr;
private String contentstr;
private String strdisk;
private boolean isDeleteServer=true;
private Connection conn=null;
private PreparedStatement stmt=null;
public ReceiveMail()
{
}
public void receiveMail(EmailAccount emailcount,String strdisk)
{
System.out.println("正在接收外部邮件");
this.strdisk=strdisk;
Store store=null;
Folder folder=null;
try{
Properties props = new Properties();
props.put("mail.pop3.host", emailcount.getZhpop());
Session mailSession = Session.getInstance(props, null);
store = mailSession.getStore("pop3");
store.connect(emailcount.getZhpop(),emailcount.getZhyh(),emailcount.getZhmm());
folder = store.getFolder("INBOX");
try
{
folder.open(2);
}
catch(MessagingException ex)
{
folder.open(1);
ex.printStackTrace();
}
Message message[] = folder.getMessages();
int messageCount = message == null ? 0 : message.length;
try
{
for(int i = 0; message != null && i < message.length; i++)
{
strcontenttype= message[i].getContentType();
myDate = message[i].getSentDate();
Address rt[] = message[i].getReplyTo();
Address fr[] = message[i].getFrom();
Address TO[] = message[i].getRecipients(javax.mail.Message.RecipientType.TO);
Address CC[] = message[i].getRecipients(javax.mail.Message.RecipientType.CC);
subjectstr = message[i].getSubject().toString();
Object objContent = message[i].getContent();
straddr = "";
if(rt != null)
{
for(int k = 0; k < rt.length; k++)
{
straddr = straddr+";"+getDisplayAddress(rt[k]);
}
}
sendaddr = "";
if(fr != null)
{
for(int k = 0; k < fr.length; k++)
sendaddr = sendaddr+";"+getDisplayAddress(fr[k]);
}
recieveaddr = "";
if(TO != null)
{
for(int k = 0; k < TO.length; k++)
recieveaddr = recieveaddr+";"+getDisplayAddress(TO[k]);
}
ccstr = "";
if(CC != null)
{
for(int k = 0; k < CC.length; k++)
ccstr = ccstr+";"+getDisplayAddress(CC[k]);
}
if(Convert.isCnChar(MimeUtility.decodeText(subjectstr)))
subjectstr = MimeUtility.decodeText(subjectstr);
else
{
try
{
if(Convert.isCnChar(MimeUtility.decodeWord(subjectstr)))
subjectstr = MimeUtility.decodeWord(subjectstr);
}
catch(Exception exception) {
System.out.println("-------------------------->"+exception);
}
}
System.out.println("message["+i+"]:"+message[i].isMimeType("text/*"));
System.out.println("message["+i+"]:"+message[i].isMimeType("multipart/*"));
if(message[i].isMimeType("text/plain") || message[i].isMimeType("text/html"))
{
contentstr = (String)objContent;
System.out.println("文件内容:"+contentstr);
}
else if(message[i].isMimeType("multipart/*"))
{
System.out.println("到这里!");
Multipart mp = (Multipart)objContent;
BodyPart bodyPart = mp.getBodyPart(0);
if(bodyPart.isMimeType("text/*"))
{
try
{
contentstr = (String)bodyPart.getContent();
//contentstr = MimeUtility.decodeWord(contentstr);
System.out.println(contentstr);
}
catch(ParseException parseexception) {
System.out.println("到这里3:"+parseexception);
}
catch(UnsupportedEncodingException unsupportedencodingexception) {
System.out.println("到这里4:"+unsupportedencodingexception);
}
}else
{
System.out.println("到这里2!");
}
} else
{
contentstr = "";
}
contentstr = Convert.toHtml(contentstr);
java.util.Date today = new java.util.Date();
String strDate = Convert.dateToString(today);
String before = Convert.dateToString(today);
String last = Convert.dateToString((new ConvertDate()).dayAfter(today, 36500));
if(myDate != null)
{
before = Convert.dateToString(myDate);
last = Convert.dateToString((new ConvertDate()).dayAfter(myDate, 36500));
}
System.out.println(before+" "+last);
int yjid=KeyGenerator.getInstance().getNextKey("yjxx");
String sqlStr="insert into yjxx(yjid,yjwbzs,yjwbcs,yjfssj,yjgqsj,yjsj,yjbt,yjnr,yjfjdz) values(?,?,?,?,?,?,?,?,?)";
int yjxxcount=0;
try
{ //向yjxx表中插入收到的邮件基本信息
conn=DBUtils.getConnection();
stmt=conn.prepareStatement(sqlStr);
stmt.setInt(1,yjid);
stmt.setString(2,recieveaddr);
stmt.setString(3,ccstr);
stmt.setString(4,before);
stmt.setString(5,last);
stmt.setString(6,before);
stmt.setString(7,subjectstr);
stmt.setString(8,contentstr);
stmt.setString(9,sendaddr);
yjxxcount=stmt.executeUpdate();
}catch(Exception e)
{
System.out.println(e);
}finally
{
DBUtils.closeStatement(stmt);
}
if(yjxxcount>0)
{
//如果向yjxx表中插入数据成功,那么向yjsj表中插入收件的信息
int sjid=KeyGenerator.getInstance().getNextKey("yjsj");
sqlStr="insert into yjsj(sjid,yjid,ryid,ryclass,xxbh,rywjj,rylx) values(?,?,?,?,?,?,?)";
stmt=conn.prepareStatement(sqlStr);
stmt.setInt(1,sjid);
stmt.setInt(2,yjid);
stmt.setInt(3,emailcount.getZhry());
stmt.setString(4,emailcount.getZhryclass());
stmt.setInt(5,emailcount.getXxbh());
stmt.setInt(6,emailcount.getZhwjj());
stmt.setInt(7,1);
stmt.executeUpdate();
DBUtils.closeStatement(stmt);
System.out.println("收件");
}
if(objContent instanceof Multipart)
{ //如果存在附件
Multipart mp = (Multipart)objContent;
try
{
for(int n = 0; mp != null && n < mp.getCount(); n++)
{
Part part = mp.getBodyPart(n);
String disposition = part.getDisposition();
if(disposition != null && (disposition.equals("attachment") || disposition.equals("inline")))
{
String filename = part.getFileName();
if(filename == null)
{
filename = " ";
} else
{
if(disposition.equals("attachment"))
{
filename = MimeUtility.decodeText(filename);
}
if(disposition.equals("inline"))
filename = Convert.toGBK(filename);
System.out.println("filemane"+filename);
//filename = Convert.toGBK(filename);
String annex_name = saveFile(filename, part.getInputStream());
System.out.println("修改后文件名:"+annex_name);
String annex_path = "oa/upload/mail/"+filename;
int annex_size = part.getSize(); //附件大小
int fjid=KeyGenerator.getInstance().getNextKey("yjfj");
sqlStr="insert into yjfj(fjid,fjoldname,fjnewname,yjid,fjdx) values(?,?,?,?,?)";
stmt=conn.prepareStatement(sqlStr);
stmt.setInt(1,fjid);
stmt.setString(2,filename);
stmt.setString(3,annex_name);
stmt.setInt(4,yjid);
stmt.setInt(5,annex_size/1024);
stmt.executeUpdate();
DBUtils.closeStatement(stmt);
}
}
}
}
catch(Exception exception1) { }
}
DBUtils.closeConnection(conn);
if(isDeleteServer)
{
message[i].setFlag(javax.mail.Flags.Flag.DELETED, true);
System.out.println("删除邮件");
}
}
}catch(Exception e)
{
System.out.println("=============================================>"+e);
}
}catch (Exception ex)
{
ex.printStackTrace();
}finally
{
try
{
if(isDeleteServer)
folder.close(true);
else
folder.close(false);
store.close();
}
catch(Exception exception3) { }
}
}
public String getDisplayAddress(Address a)
{
String pers = null;
String addr = null;
if((a instanceof InternetAddress) && (pers = ((InternetAddress)a).getPersonal()) != null)
addr = pers+" "+"<"+((InternetAddress)a).getAddress()+">";
else
addr = a.toString();
return addr;
}
public String saveFile(String filename, InputStream inputStream)
{
String retFileName = null;
String sysFileName = null;
int iExt = filename.indexOf(".");
String longTime = Long.toString((new java.util.Date()).getTime());
String fileFirst = longTime;
String fileExt = "";
if(iExt > 0)
{
fileFirst = longTime;
fileExt = filename.substring(iExt + 1, filename.length());
sysFileName = longTime+"."+fileExt;
} else
{
sysFileName = longTime;
}
retFileName =strdisk+sysFileName;
try
{
File file = new File(retFileName);
for(int i = 0; file.exists(); i++)
{
if(iExt > 0)
sysFileName = fileFirst+Integer.toString(i)+"."+fileExt;
else
sysFileName = fileFirst+Integer.toString(i);
retFileName = strdisk+sysFileName;
file = new File(retFileName);
}
byte bRead[] = new byte[inputStream.available()];
inputStream.read(bRead);
FileOutputStream fos = new FileOutputStream(file);
fos.write(bRead);
fos.close();
}
catch(Exception e)
{
System.out.println(e);
}
return sysFileName;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -