📄 getmessage.java
字号:
public void run()
{
String propstr = "mail.pop3.rsetbeforequit";
SimpleDateFormat df = new SimpleDateFormat("HH");
while (bl_run)
{
try
{
String redate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
Myprint("开始接收邮件......"+redate);
if (df.format(Calendar.getInstance().getTime()).equals("23"))
{
new Thread(new Del_msgid(maildbcon, getday)).start();
}
ResultSet rs = maildbcon.f_getreset("select * from usermsg_list where u_effect='有效'");
while (rs.next())
{
String m_username = null;
try
{
String u_unit = rs.getString("u_unit");
String u_name = rs.getString("u_name");
String u_user = rs.getString("u_username");
String host = rs.getString("u_pop");
m_username = rs.getString("u_mailname");
String m_password = rs.getString("u_mailword");
Store store = null;
if(host.equals("pop.gmail.com"))
store = mail_connect(propstr, host, m_username, m_password, "pop3",995);
else
store = mail_connect(propstr, host, m_username, m_password, "pop3", 110);
Myprint(" " + m_username + "...");
if (store == null)
{
Myprint("连接 " + m_username+" 失败!");
continue;
}
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
Message message[] = folder.getMessages();
//if (message.length > 0)
//{
//Myprint("正在接收 " + u_name + "<" + m_username + "> " + message.length + "封新邮件!");
//}
for (int i = 0; i < message.length; i++)
{
if (this.get_message(message[i], u_unit, u_name, u_user))
message[i].setFlag(Flags.Flag.DELETED, true);
}
//if(message.length>0)
//Myprint(u_name + "<" + m_username + "> 新邮件接收完毕!");
folder.close(true);
store.close();
}
catch (Exception ee)
{
Myprint(ee.toString() + " MailSer_Form中 邮件处理异常1");
}
}
rs.close();
redate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
Myprint("邮件接收完毕......" + redate);
Thread.sleep(time_sfjg * 1000);
}
catch (Exception ex)
{
Myprint(ex.toString() + " MailSer_Form中 邮件处理异常2");
}
}
}
//mailport 995或110
public Store mail_connect(String property, String host, String username, String password, String xieyi,int mailport)
{
try
{
//Properties props = System.getProperties();
Properties props = new Properties();
if (mailport == 995)
{
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.pop3.socketFactory.port", mailport + "");
props.setProperty("mail.pop3.socketFactory.fallback", "false");
}
//props.setProperty("mail.pop3.socketFactory.fallback", "false");
props.setProperty("mail.pop3.host", host);
props.setProperty("mail.pop3.port", mailport + "");
props.setProperty("mail.pop3.timeout", 30000+"");
Session session = Session.getInstance(props, null);
Store store = null;
URLName urln = new URLName("pop3", host, mailport, null, username, password);
store = session.getStore(urln);
store.connect(host, username, password);
return store;
}
catch (Exception ex)
{
//Myprint(ex.toString()+" 无法连接 " + username);
return null;
}
}
public boolean get_message(Message msg, String u_unit, String u_name, String u_user)
{
try
{
MailServer pmm = null;
int i = 0;
pmm = new MailServer((MimeMessage)msg, maildbcon);
//标题
String title = pmm.getSubject();
//发送日期
String sentdate = pmm.getSentDate();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date dt_now = Calendar.getInstance().getTime();
java.util.Date dt_sentdate = df.parse(sentdate);
long l_days = (dt_now.getTime() - dt_sentdate.getTime()) / (1000 * 60 * 60 * 24);
//删除超过期限的邮件
if (isdelete)
{
if (deleteday >= l_days)
{
return true;//删除此邮件
}
}
//不接收超过期限的邮件
if (getday <= l_days)
{
return false;//不接收
}
//没有id的邮件,不下载
String msgid = pmm.getMessageId();
if (msgid == null)
{
Myprint(msgid);
return false;
}
//已下载过该邮件不接收
if (maildbcon.f_checkmsgid(msgid, sentdate))
return false;
//保存messageid
maildbcon.f_execute("insert into msgid_list(msg_id,msg_date) values('"+msgid+"','"+sentdate+"')");
Myprint(" " + u_name + " 1封新邮件!");
//是否需要回执
//boolean replysign = pmm.getReplySign();
//是否有附件
//boolean isattachment = pmm.isContainAttach((Part)msg);
//发送人
String sdperson = pmm.getFrom();
//收件人
String reperson = pmm.getMailAddress("to");
//抄送人
String csperson = pmm.getMailAddress("cc");
//密送人
//Myprint("Message "+i+" bcc: "+pmm.getMailAddress("bcc"));
//解析邮件内容
pmm.getMailContent((Part)msg);
//邮件正文
String bodystr = pmm.getBodyText();
int noworderid = get_orderid();
//收抄件人
String mailid = u_unit + u_name + u_user + noworderid;
//保存收件人
String[] csstr = str_split(reperson, ",");
for (int ii = 0; ii < csstr.length; ii++)
{
if (!csstr[ii].equals(""))
f_save_smail(mailid, csstr[ii], "收件人", noworderid);
}
//保存抄件人
csstr = str_split(csperson,",");
for (int ii = 0; ii < csstr.length; ii++)
{
if (!csstr[ii].equals(""))
f_save_smail(mailid, csstr[ii], "抄送人", noworderid);
}
//存放邮件
f_save_mail(mailid, u_user, sdperson, reperson, csperson, title, bodystr, sentdate);
//存放附件
if (pmm.isContainAttach((Part)msg))
{
//pmm.setAttachPath("linshi");
pmm.saveAttachMent((Part)msg, mailid);
}
String redate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
Myprintlog("收到新邮件[收件人:"+reperson+"][发件人:"+sdperson+"] "+redate);
//Myprint(u_name + " 新邮件接收完毕!");
return false;
}
catch (Exception ex)
{
Myprint(ex.toString()+"保存邮件");
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -